C++ 传递模板';s模板成员类型作为模板参数
带有TTMember的类C++ 传递模板';s模板成员类型作为模板参数,c++,templates,template-templates,C++,Templates,Template Templates,带有TTMember的类具有名为TT的模板成员类型 struct WithTTMember { template<typename> using TT = void; }; ExpectTT可以成功实例化 第三个类ExpectTWithTT需要一个名为TT的模板成员类型的模板参数,并使用它实例化ExpectTWithTT: template<typename T> struct ExpectTWithTT { using X = ExpectTT<
具有名为TT
的模板成员类型
struct WithTTMember {
template<typename> using TT = void;
};
ExpectTT
可以成功实例化
第三个类ExpectTWithTT
需要一个名为TT
的模板成员类型的模板参数,并使用它实例化ExpectTWithTT
:
template<typename T>
struct ExpectTWithTT {
using X = ExpectTT<typename T::TT>; // this doesn't compile
};
模板
结构ExpectTWithTT{
使用X=ExpectTT;//这不会编译
};
我希望ExpectTWithTT::X
与ExpectTT
的类型相同。但是上面的代码无法编译
我试着在编译器消息和我的直觉之后,用模板
和类型名
关键字的组合注入错误的行,但我无法让它工作
我如何表达我想要的
<>任何C++版本都很好。 你应该使用关键字来告诉你<代码> t::t/<代码>是模板。< /p>
template<typename T>
struct ExpectTWithTT {
using X = ExpectTT<T::template TT>;
// ^^^^^^^^
};
模板
结构ExpectTWithTT{
使用X=ExpectTT;
// ^^^^^^^^
};
哦,天哪,那很容易!我从T::TT
开始,编译器告诉我添加typename
,这显然是不好的。谢谢@是的,我同意这些关键词的用法令人困惑。:)@您好,您会发现这个问题特别有助于参考:
template<typename T>
struct ExpectTWithTT {
using X = ExpectTT<T::template TT>;
// ^^^^^^^^
};