In the following code:
class Outer {
private:
void f_private(Outer::Inner in); // Wrong
public:
class Inner {};
void f_public(Outer::Inner in); // OK
};
f_private() cannot use nested class Outer::Inner as parameter type. But it's ok to do so in f_public().
Can someone explain to me in what rule this is based on, and what's the benefit it?