У меня есть следующий код
class A
{
private:
class B
{
public:
void f()
{
printf("Test");
}
};
public:
B g()
{
return B();
}
};
int main()
{
A a;
A::B b; // Compilation error C2248
A::B b1 = a.g(); //Compilation error C2248
auto b2 = a.g(); // OK
a.g(); // OK
b2.f(); // OK. Output is "Test"
}
Как вы можете видеть, у меня есть класс A и частный вложенный класс B. Без использования auto я не могу создать экземпляр A:: B вне A, но с авто я могу. Может кто-нибудь объяснить, что здесь не так? Я использую VС++ 12.0, 13.0, 14.0 (всегда такое же поведение)