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++?
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
Pozdrowienia chris. Tak, jestem tego świadomy. – user2023370
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. –