Si consideri il seguente codice:Perché GCC consente di ereditare da una classe nidificata privata?
class A {
class B {};
};
template <typename C>
class D : A::B {};
void f() {
D<int> d;
}
D<int>
eredita da A::B
che è una classe privata nidificato. Mi aspettavo che questo fosse un errore, ma GCC accetta questo codice. È un bug in GCC o mi sto perdendo qualcosa?
Sembra un bug, dal momento che la rimozione della dichiarazione del modello comporta l'errore previsto. – StoryTeller
MSVC genera un errore. –
Visual Studio 2012 non desidera compilare quel codice. – Yester