深刻理解关键字typename用来标识是一个类型,详情见下面的例子
typename T::MyType m_c;
这里的typename表示T::MyType是一种类型,而不是某类的静态成员变量!!!
class A
{
public:
typedef int MyType; // 使用typedef关键字定义了内部类型
};
class B
{
public:
using MyType = int;//C++ 11 后的类型别名或者模板别名
};
class C
{
public:
class MyType // 直接定义了内部类型
{
public:
int m_t;
};
};
template<class T>
class D
{
public:
/*
1. 这里是定义