W przypadku wątpliwości, należy dzyń:
$ clang++ -Weverything test.cpp
test.cpp:4:5: warning: no previous prototype for function 'foo' [-Wmissing-prototypes]
int foo()
^
test.cpp:6:10: warning: expression result unused [-Wunused-value]
return 1,2,3,4,5,6;
^
test.cpp:6:12: warning: expression result unused [-Wunused-value]
return 1,2,3,4,5,6;
^
test.cpp:6:14: warning: expression result unused [-Wunused-value]
return 1,2,3,4,5,6;
^
test.cpp:6:16: warning: expression result unused [-Wunused-value]
return 1,2,3,4,5,6;
^
test.cpp:6:18: warning: expression result unused [-Wunused-value]
return 1,2,3,4,5,6;
^
6 warnings generated.
Jak sama nazwa wskazuje , -Weverything
aktywuje każde dostępne ostrzeżenie. W ten sposób nie musisz pamiętać grup, w których się znajdują.
Co do wyjaśnień: patrz odpowiedź Mysticial na temat operatora przecinka i jego efektów sekwencyjnych. Jedną z użytecznych występowanie tego operatora jest:
std::list<Item> list = /**/;
assert(list.size() >= 10);
auto it = list.begin();
for (int i = 0; i < 10; ++i, ++it) {
std::cout << "Item " << i << ": " << *it << "\n";
}
Uwaga jak 3rd klauzula pętli for
używa operatora przecinek zrobić dwie operacje w jednym rachunku.
Oczywiście taka składnia jest przeważnie anegdotyczna, więc ludzie regularnie się dziwią ...