次のコードを検討してください。
class A {
class B {};
template <typename T>
friend class C;
};
template <typename T>
class C : A::B {};
int main() { C<int> c; }
GCC と Clang では正常にコンパイルされますが、Visual C++ 2010 ではエラーが発生します。
test.cc(11) : error C2248: 'A::B' : cannot access private class declared in class 'A'
Visual C++ のバグですか、それとも何か不足していますか?