gcc 4.9 pozwala na następujący kod, ale gcc 4.8 i clang 3.5.0 go odrzucają.Czy auto jako parametr w zwykłej funkcji ma rozszerzenie GCC 4.9?
void foo(auto c)
{
std::cout << c.c_str();
}
uzyskać warning: ISO C++ forbids use of 'auto' in parameter declaration [-Wpedantic]
w 4.9, ale w 4.8 i brzękiem uzyskać error: parameter declared 'auto'
.
Z gcc 4.9.1, 'g ++ -std = C++ 11' daje mi" ostrzeżenie: użycie "auto" w deklaracji parametrów dostępne tylko z -std = C++ 1y lub -std = gnu ++ 1y ". W przypadku 'g ++ -std = C++ 14' nie ma żadnego ostrzeżenia. –
@KeithThompson, Weird, zdecydowanie nie jest częścią C++ 14 (lambdas, yes, but not other functions). – chris
@chris: Gra z gcc 4.9.1, [tutaj jest przykład] (http://codepad.org/mm1jRI4X). Kompilator używany przez codepad.org nie obsługuje go, ale otrzymuję 4 linie wyjściowe o oczekiwanym rozmiarze i wartości w każdej linii. Podobno 'foo' działa jak szablon. –