gcc 4.9 erlaubt den folgenden Code, aber gcc 4.8 und clang 3.5.0 lehnen es ab.Ist Auto als Parameter in einer regulären Funktion eine GCC 4.9 Erweiterung?
void foo(auto c)
{
std::cout << c.c_str();
}
ich warning: ISO C++ forbids use of 'auto' in parameter declaration [-Wpedantic]
in 4.9, aber in 4.8 und Klirren ich error: parameter declared 'auto'
bekommen.
mit gcc 4.9.1, 'g ++ -std = C++ 11 'gibt mir„Warnung: Die Verwendung von 'auto' in Parameterdeklaration nur bei -std = C++ 1J oder -std = Gnu ++ 1J ". Mit 'g ++ -std = C++ 14' gibt es keine Warnung. –
@KeithThompson, Seltsam, es ist definitiv nicht Teil von C++ 14 (Lambdas, ja, aber nicht andere Funktionen). – chris
@chris: Herumspielen mit gcc 4.9.1, [hier ein Beispiel] (http://codepad.org/mm1jRI4X). Der von codepad.org verwendete Compiler behandelt das nicht, aber ich bekomme 4 Zeilen mit der erwarteten Größe und dem erwarteten Wert in jeder Zeile. Offenbar verhält sich 'foo' wie eine Vorlage. –