void {} vs void()作为void初始值设定项

时间:2017-10-27 16:16:49

标签: c++ initialization void initializer list-initialization

可以使用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)。

为什么会这样?它是符合标准的行为吗?

0 个答案:

没有答案