gcc 4.9 consente il seguente codice, ma gcc 4.8 e clang 3.5.0 lo rifiutano.È automatico come parametro in una funzione normale un'estensione GCC 4.9?
void foo(auto c)
{
std::cout << c.c_str();
}
ottengo warning: ISO C++ forbids use of 'auto' in parameter declaration [-Wpedantic]
in 4,9 ma in 4.8 e clang ottengo error: parameter declared 'auto'
.
Con gcc 4.9.1, 'g ++ -std = C++ 11' mi dà" avviso: uso di 'auto' nella dichiarazione dei parametri disponibile solo con -std = C++ 1y o -std = gnu ++ 1y ". Con 'g ++ -std = C++ 14' non ci sono avvisi. –
@KeithThompson, Stranamente, non fa assolutamente parte del C++ 14 (lambda, sì, ma non altre funzioni). – chris
@chris: giocare con gcc 4.9.1, [ecco un esempio] (http://codepad.org/mm1jRI4X). Il compilatore usato da codepad.org non lo gestisce, ma ottengo 4 righe di output con le dimensioni e il valore attesi su ciascuna riga. Apparentemente 'foo' si comporta come un modello. –