为什么我可以在私人类型上使用汽车?
我对下面的代码编译和运行(vc 2012&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;}
这段代码编译得很好是正确的吗?为什么这是正确的?为什么我可以用auto在私有类型上,而我不能使用它的名称(如预期的那样)?
auto
哆啦的时光机
相关分类