В этом вопросе обсуждалось, почему выставлять закрытый тип с помощью auto
:
#include <iostream>
using namespace std;
class Base {
class PrivateClass {
public:
void bar() { cout << "PrivateClass" << endl; }
};
public:
PrivateClass foo() {
PrivateClass a;
return a;
}
};
int main() {
Base b;
auto p = b.foo();
p.bar();
return 0;
}
отлично соответствует стандарту С++ 11. Я до сих пор не понимаю, как эта идиома может быть полезной в реальном приложении. Существуют ли проблемы, когда эта идиома может быть эффективно использована или ее следует рассматривать как "любопытный" побочный эффект ключевого слова?