gcc 4.9 aşağıdaki kodları sağlar, ancak gcc 4.8 ve clang 3.5.0 onu reddeder.Düzenli bir işlevde otomatik olarak GCC 4.9 uzantısı olarak otomatik mi?
void foo(auto c)
{
std::cout << c.c_str();
}
ben 4.9 içinde warning: ISO C++ forbids use of 'auto' in parameter declaration [-Wpedantic]
olsun ama 4.8 ve clang I error: parameter declared 'auto'
olsun.
gcc 4.9.1 ile, g ++ -std = C++ 11' bana "uyarı verir: parametre beyanında 'auto' kullanımı sadece -std = C++ 1y veya -std = gnu ++ 1y ile kullanılabilir ". 'G ++ -std = C++ 14' ile uyarı yoktur. –
@KeithThompson, Weird, kesinlikle C++ 14'ün bir parçası değil (lambdas, evet, ama diğer işlevler değil). – chris
@chris: Gcc 4.9.1 ile oyun oynamak, [işte bir örnek] (http://codepad.org/mm1jRI4X). Codepad.org tarafından kullanılan derleyici bu sorunu çözmez, ancak her satırda beklenen boyut ve değerle 4 satır çıktı alırım. Görünüşe göre 'foo' bir şablon gibi davranıyor. –