Der clang-Compiler gibt Warnungen für das folgende Snippet aus, wie zu sehen ist here.Warum gibt der Klang diese Warnungen aus?
clang++ -std=c++14 -O0 -Wall -pedantic -pthread main.cpp && ./a.out
main.cpp:1:18: warning: braces around scalar initializer [-Wbraced-scalar-init]
void point(int = {1}, int = {2}) {}
^~~
main.cpp:1:29: warning: braces around scalar initializer [-Wbraced-scalar-init]
void point(int = {1}, int = {2}) {}
^~~
2 warnings generated.
Warum ist das?
void point(int = {1}, int = {2}) {}
int main(){
point();
}
Soweit ich das beurteilen kann, {1}
und {2}
sind absolut gültige Standardargumente nach [dcl.fct.default]/1, [dcl.fct]/3 und [dcl.init]/1.
Nun, es ist nur eine Warnung, IMO das bedeutet nur "Hey, das ist nutzlos und sieht komisch aus, bist du sicher, dass du das meintest?". – Quentin
@Quentin Da dies scheint ein perfekt gültiger Code zu sein, sollte es keine Warnung geben. –
Es gibt viele gültige Snippets, die Warnungen auslösen - ungültiger Code löst Fehler aus. 'if (x = etwas());' ist ein anderes. – Quentin