可以使用void()
构造来创建void
"类型的值。 (奇怪但真实)。但是带有花括号的C ++ 11 +初始化语法在这种情况下不起作用:
int f_int_parenthesis()
{
return int(); // OK
}
int f_int_braces()
{
return int{}; // OK
}
void f_void_parenthesis()
{
return void(); // OK
}
void f_void_braces()
{
return void{}; // error
}
The code compilability is checked with g++ 7.2.0 and clang++ 3.8.0(编译标志为-std=c++14 -Wall -Wextra -Werror -pedantic-errors -O0
)。
为什么会这样?它是符合标准的行为吗?