进行此小测试(http://coliru.stacked-crooked.com/a/71096660a727f4b0):
#include <iostream>
int main()
{
std::cout << sizeof(void()) << '\n';
}
gcc
产生警告而不是错误(并打印1)。难道不应该像clang那样将其视为格式错误的表达式?
标准不区分警告和错误。因此,格式错误的构造只能发出警告。也不要求编译也应失败。唯一的要求是应发出诊断信息。未指定诊断的确切含义。