作为返回类型的匿名结构

Anonymous struct as a return type

本文关键字:结构 返回类型      更新时间:2023-10-16

以下代码可以使用 vc++ 19.00.23506(标志:/Wall /WX /Za(和 vc++ 19.10.25109.0(标志:/Wall /WX /Za /permissive- 编译,这可以在 http://webcompiler.cloudapp.net 检查(,但不能使用 clang 3.8.0g++ 6.3.0 (标志:-std=c++11 -Wall -Wextra -Werror -pedantic-errors (编译。这是 vc++ 中的一个错误吗,标准是否禁止此类结构?

struct
{
}
foo()
{
    return {};
}
int main()
{
}

MSVC 似乎错了:

[dcl.fct]/9 不应在返回或参数类型中定义类型...

你可以返回匿名类型,但你必须在函数中定义它:

auto foo()
{
    struct {} s;
    return s;
}