typedef 使用类型名
typedef Using a typename
所以我some code问了一个问题,我意识到这个问题很混乱,后来被删掉了:
template <typename T>
struct foo {
typedef typename pair<T, T> PointType;
private:
PointType point;
};
我不确定PointType
定义中typename
的功能是什么。是这个关键字被省略了吗?我注意到它经常在 using
定义中用于在类型支持中添加 *_t
扩展。也许这就是这里的意图?
这是必要的,因为 pair<T, T>
是一个 dependent name,这意味着它会根据 foo
的初始化方式而改变。
根据 cppreference,您正在使用第二种类型的类型名称:http://en.cppreference.com/w/cpp/keyword/typename
基本上,你是在给编译器一个提示:T 是一个依赖于模板的类型
pair<T, T>
所以我some code问了一个问题,我意识到这个问题很混乱,后来被删掉了:
template <typename T>
struct foo {
typedef typename pair<T, T> PointType;
private:
PointType point;
};
我不确定PointType
定义中typename
的功能是什么。是这个关键字被省略了吗?我注意到它经常在 using
定义中用于在类型支持中添加 *_t
扩展。也许这就是这里的意图?
这是必要的,因为 pair<T, T>
是一个 dependent name,这意味着它会根据 foo
的初始化方式而改变。
根据 cppreference,您正在使用第二种类型的类型名称:http://en.cppreference.com/w/cpp/keyword/typename
基本上,你是在给编译器一个提示:T 是一个依赖于模板的类型
pair<T, T>