2014-06-15 14 views
16

Patrząc na zmiany wydania GCC 4.9.0 here, byłem mile zaskoczony, gdy przeczytałem następujące; w sekcji „nowych języków i konkretnych usprawnień wersji językowej” C++:Czy C++ 14 obsługuje nieograniczone funkcje ogólne?

g ++ obsługuje niewymuszony funkcje rodzajowe w sposób określony przez §4.1.2 i §5.1.1 z N3889: Concepts Lite Specification. W skrócie, auto może być używane jako specyfikator typu w deklaracji parametru dowolnego deklaratora funkcji w celu wprowadzenia domyślnego parametru funkcji szablonu, podobnego do ogólnych lambd.

// the following two function declarations are equivalent 
auto incr(auto x) { return x++; } 
template <typename T> 
auto incr(T x) { return x++; } 

Zbudowałem GCC 4.9.0 i moje początkowe testy działało zgodnie z oczekiwaniami. Wierzę, że Concepts Lite pozostanie w jakiś sposób pomocniczy dla nadchodzącej specyfikacji C++ 14. Czy istnieje jakiś plan "nieograniczonych ogólnych funkcji", aby stać się częścią C++?

+2

Chociaż nie sądzę, że to będzie 100% oficjalny aż C++ 17 możesz prawie to zrobić w C++ 14: 'auto incr = [] (auto x) {return x ++;};' – chris

+0

Pozdrowienia chris. Tak, jestem tego świadomy. – user2023370

+0

Nie mogę znaleźć żadnego z dodatków wymienionych w '4.1.2' i' 5.1.1' z 'N3889' w najnowszym projekcie standardu' N3936', więc powiedziałbym nie dla C++ 14. –

Odpowiedz

5

Jeśli przyjrzymy się najnowszym projekcie standardowym N3936 który jest całkiem blisko do C++ 14 DIS, która jest N3937 (to jest pokryte N3938). Nie zawiera żadnego języka określonego w sekcjach 4.1.2 i 5.1.1 z N3889.

Tak więc dla C++ 14 wygląda na to, że odpowiedź brzmi nie, ale Bjarne Stroustrup says concepts lite will be a technical report. Możesz znaleźć więcej informacji na temat raportów technicznych ISO cpp's Current Status page który mówi:

Beyond C++ 14, komisja rozważa produkcję innego C++ standard w około 2017. To nie znaczy, nic się nie dzieje w międzyczasie jednak , ponieważ obecnie mamy osiem (8) oddzielnych specyfikacji technicznych, które są w toku, aby zostać opublikowanym w 2014 i 2015 roku. Począwszy od 2012 roku, komitet ma przeniesiony do modelu "niezwiązanego z wielkością produkcji", w którym główne elementy pracy może postępować niezależnie od samego standardu i być dostarczany jako oddzielne stacje robocze . Dostawcy mogą zdecydować się na ich wdrożenie, a wspólnota może uzyskać dostęp do każdej z funkcji std :: experimental version of . To pozwala nam poznać i dostosować Każda cecha jest projekt oparciu o doświadczenia, zanim zostanie formalnie ujęte w przyszłej wersji rzeczywistego C++ standard