次のコードは、反復子が宣言されている行で構文エラーを生成します。
template <typename T>
class A
{
public:
struct B
{
int x, y, z;
};
void a()
{
std::map<int, B>::const_iterator itr; // error: ; expected before itr
}
std::vector<T> v;
std::map<int, B> m;
};
これは、A がテンプレート化されたクラスである場合にのみ発生します。このコードの何が問題になっていますか? A から B を移動すると、コードは正常にコンパイルされます。