Während ich die GCC 4.9.0 Release-Änderungen here sah, war ich angenehm überrascht, Folgendes zu lesen; unter dem „neuen Sprachen und Sprachspezifische Verbesserungen“ Abschnitt für C++:Wird C++ 14 uneingeschränkte generische Funktionen unterstützen?
G ++ unterstützt unbeschränkte generische Funktionen wie §4.1.2 und §5.1.1 von N3889: Concepts Lite Specification angegeben. Kurz gesagt, Auto kann als Typ-Specifier in einer Parameterdeklaration eines beliebigen Funktionsdeklarators verwendet werden, um eine implizite Funktion Template-Parameter einzuführen, ähnlich wie generische Lambdas.
// the following two function declarations are equivalent
auto incr(auto x) { return x++; }
template <typename T>
auto incr(T x) { return x++; }
Ich baute GCC 4.9.0 und meine ersten Tests funktionierte wie erwartet. Ich glaube, dass Concepts Lite irgendwie hilfreich für die bevorstehende C++ 14-Spezifikation bleiben wird. Gibt es einen Plan für "unbeschränkte generische Funktionen", um Teil von C++ zu werden?
enthalten ist Während ich dies nicht 100% offiziell werden denken, bis C++ 17 Sie können es fast in C++ 14 tun: 'auto incr = [] (auto x) {return x ++;};' – chris
Prost chris. Ja, ich bin mir dessen bewusst. – user2023370
Ich kann keine der Zusätze finden, die in '4.1.2' und' 5.1.1' von 'N3889' in dem neuesten Entwurfsstandard' N3936' erwähnt werden, also würde ich nein für C++ 14 sagen. –