相关疑难解决方法(0)

为什么我可以在私有类型上使用auto?

以下代码编译并运行时,我感到很惊讶(vc2012&gcc4.7.2)

class Foo {
    struct Bar { int i; };
public:
    Bar Baz() { return Bar(); }
};

int main() {
    Foo f;
    // Foo::Bar b = f.Baz();  // error
    auto b = f.Baz();         // ok
    std::cout << b.i;
}
Run Code Online (Sandbox Code Playgroud)

这段代码编译得好吗?为什么这是正确的?为什么我可以auto在私有类型上使用,而我不能使用它的名字(如预期的那样)?

c++ private-members auto c++11

134
推荐指数
4
解决办法
4172
查看次数

标签 统计

auto ×1

c++ ×1

c++11 ×1

private-members ×1