【发布时间】:2021-02-18 05:18:45
【问题描述】:
类WithTTMember 有一个名为TT 的模板成员类型。
struct WithTTMember {
template<typename> using TT = void;
};
另一个类ExpectTT 采用模板模板参数:
template< template<typename> typename TT >
struct ExpectTT {};
ExpectTT<WithTTMember::TT>可以成功实例化。
第三个类ExpectTWithTT 需要一个模板参数,其模板成员类型名为TT,并使用它实例化ExpectTT:
template<typename T>
struct ExpectTWithTT {
using X = ExpectTT<typename T::TT>; // this doesn't compile
};
我希望ExpectTWithTT<WithTTMember>::X 与ExpectTT<WithTTMember::TT> 的类型相同。但是上面的代码编译失败。
我尝试按照编译器消息和我的直觉使用 template 和 typename 关键字的组合注入错误行,但我无法让它工作。
如何表达我想要的?
任何 C++ 版本都可以。
【问题讨论】:
标签: c++ templates template-templates