Случай, там нет значения, поэтому нет предупреждения.
тав о самом неприятном разборе, я немного поэкспериментировал и нашел эту программу. Есть две очень похожие строки. Один из них выдает предупреждения как в g ++ 7, так и в clang ++ - 3.9, другой - нет.
int main() {
void(); // no warning
int(); // warning: statement has no effect
}
Во второй строке построенный по умолчанию объект типаint
создается и сразу уничтожается, поэтому не используется. Но что происходит в первой строке? Если он был проанализирован таким же образом, это должно быть ошибкой, поскольку создание объекта типа недопустимоvoid
, С другой стороны, это тоже не похоже на объявление функции.