函数类型的 sizeof; gcc 不认为它格式错误
sizeof over a function type; gcc doesn't recognized it as ill-formed
做这个小测试 (http://coliru.stacked-crooked.com/a/71096660a727f4b0):
#include <iostream>
int main()
{
std::cout << sizeof(void()) << '\n';
}
gcc
产生警告而不是错误(并打印 1)。难道不应该像 clang 那样将其视为格式错误的表达式吗?
该标准不区分警告和错误。因此,格式错误的构造只能发出警告。编译也应该失败不是必需的。唯一的要求是应该发布诊断。未指定诊断的确切含义。
(以及相关说明:有一些结构不正确,但标准根本不需要诊断)
做这个小测试 (http://coliru.stacked-crooked.com/a/71096660a727f4b0):
#include <iostream>
int main()
{
std::cout << sizeof(void()) << '\n';
}
gcc
产生警告而不是错误(并打印 1)。难道不应该像 clang 那样将其视为格式错误的表达式吗?
该标准不区分警告和错误。因此,格式错误的构造只能发出警告。编译也应该失败不是必需的。唯一的要求是应该发布诊断。未指定诊断的确切含义。
(以及相关说明:有一些结构不正确,但标准根本不需要诊断)