#include <stdio.h>
#include <iostream>
using namespace std;
template<typename T1>
class A
{
public:
A(T1 t)
{}
class AIterator
{
}
};
class B
{
public:
template<typename T1>
void try()
{
A<T1>::AIterator it;
}
};
以上代码在gcc环境下无法编译通过。
经过查找原因,后来发现:C++中依赖受限名称(使用了::来限定)不能作为类型使用,除非加上typename。
依赖名称:含有模板参数<T1>
受限名称:含有::符号