'auto' ist nicht zulässig in Funktion Prototyp mit Clang

Mit Clang 3.5, 3.6 oder 3.7, mit der fahne std=c++1y den folgenden code nicht kompiliert :

#include <iostream>
auto foo(auto bar) { return bar; }
int main() {
  std::cout << foo(5.0f) << std::endl;
}

Den Fehler gegeben ist :

Fehler: 'auto' nicht zulässig in Funktion Prototyp

Ich habe keine Fehler mit g++ - 4.9.
Ist dieser Fehler produziert, weil das Geräusch noch nicht umgesetzt functionnality noch oder ist es weil ich bin nicht berechtigt das zu tun und GCC irgendwie ist es erlaubt ?

  • Ich denke, man sollte das nicht tun, da Sie es außerhalb des Bereichs.
  • auto Funktion Parameter der normalen (non-lambda) Funktionen sind eine Erweiterung von Konzepten TS. Sie sind nicht Teil von C++14, die ist, was C++1y wurde.
  • Btw, es gibt einen(n-inoffizielle?) clang ast, die es unterstützt. Einige Diskussionen finden Sie auf der std-Diskussion-Mailingliste. Ich weiß nicht, was der aktuelle status des Zweiges, obwohl.
  • BTW C++14 ist, so dass Sie verwenden sollten -std=c++14 (und aktualisieren, wenn Ihr compiler nicht, dass der Schalter). Die nächste version ist vorläufig als c++1z.
  • gcc 4.9.x kann gebaut werden mit Konzepten, die wahrscheinlich ist, warum Sie es sehen.
  • Danke für Eure Ratschläge. Mit c++1y ist daher veraltet ?
  • es war nie Teil eines Standards, so dass wir würde nicht nennen es veraltet, aber es macht keinen Sinn, es zu benutzen, es sei denn, Sie sind stecken mit einem alten compiler

InformationsquelleAutor coincoin | 2015-06-05
Schreibe einen Kommentar