xml*_*lmx 8 c++ compiler-errors visual-c++ c++11 trailing-return-type
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++的错误吗?
Rei*_*ica 11
实际上,在C++中,在参数或返回类型中定义类型是否合法,无论是否命名.参见C++ 11 [diff.decl]:
更改:在C++中,可能无法在返回或参数类型中定义类型.在C中,允许这些类型定义
所以实际问题是第一个案件被接受,而第二个案件被拒绝.