gpt4 book ai didi

c++ - 为什么未命名的结构不能用作尾随返回类型?

转载 作者:可可西里 更新时间:2023-11-01 17:38:08 25 4
gpt4 key购买 nike

struct { int a, b; } f(int x, int y) // OK
{
return { x, y };
}

auto g(int x, int y) -> struct { int a, b; } // error C2332
{
return { x, y };
}

int main()
{
auto n = f(1, 2).a; // OK
}

我的编译器是 VC++ 2013 RC。

为什么 g 错误而 f 正常?

这是VC++的bug吗?

最佳答案

实际上,在 C++ 中,在参数或返回类型中定义类型是非法的,无论是否命名。参见 C++11[diff.decl]:

Change: In C++, types may not be defined in return or parameter types. In C, these type definitions are allowed

所以实际的问题是第一个被接受,而不是第二个被拒绝。

关于c++ - 为什么未命名的结构不能用作尾随返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19178920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com