Просто, чтобы объяснить несколько других аспектов ситуации ...
Оператор запятой имеет самый низкий приоритет среди всех операторов C ++, поэтому, например, код ...
#include <iostream>
int main()
{
std::cout << 5, 2; // outputs 5, complete line/statement evaluates to 2
std::cout << '\n';
std::cout << (5, 2); // outputs 2 (5 is discarded), line evaluates to std::cout
std::cout << '\n';
}
... будет выводить «5» в строке комментария A и «2» из B.
Из-за этого приоритета обратите внимание, что , если keep_window_open()
вернул void
, тогда std::cout
не будет знать, как его транслировать, и вы получите ошибку компилятора из ...
std::cout << keep_window_open(); // can't compile if function return type is void
... но все равно не будете безопасны при использовании, которое вы ''повторно исследовать ...
std::cout << "Hello, World!\n", // can compile because seen as two comma-separated
keep_window_open(); // subexpressions, so std::cout doesn't try to stream
// a return value from keep_window_open().