宣言されているクラスの外部で内部クラスを定義する際に問題があります。
struct Base {
struct A {
struct B;
};
struct A::B {
};
};
コンパイルして GCC で動作しますが、Clang では次のエラーで失敗します。
innerclass.cpp:6:12: error: non-friend class member 'B' cannot have a qualified name
struct A::B {
~~~^
最も外側のクラス Base が省略されている場合、コードは Clang で機能します。
このように内部クラスを定義することは違法ですか? もしそうなら、それはどのように行われるべきですか?
プラットフォーム:
OS X 10.8.3
XCode 4.6.2
Clang Apple LLVM バージョン 4.2 (clang-425.0.24) (LLVM 3.2svn ベース)
GCC gcc バージョン 4.2.1 (Apple Inc. ビルド 5658 ベース) (LLVM ビルド 2336.11. 00)