首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将模板的模板成员类型作为模板模板参数传递

将模板的模板成员类型作为模板模板参数传递
EN

Stack Overflow用户
提问于 2021-02-18 05:18:45
回答 1查看 57关注 0票数 4

WithTTMember有一个名为TT的模板成员类型。

代码语言:javascript
运行
复制
struct WithTTMember {
    template<typename> using TT = void;
};

另一个类ExpectTT接受一个模板模板参数:

代码语言:javascript
运行
复制
template< template<typename> typename TT >
struct ExpectTT {};

可以成功地实例化ExpectTT<WithTTMember::TT>

第三类ExpectTWithTT期望模板参数具有名为TT的模板成员类型,并使用它实例化ExpectTT

代码语言:javascript
运行
复制
template<typename T>
struct ExpectTWithTT {
    using X = ExpectTT<typename T::TT>;  // this doesn't compile
};

我希望ExpectTWithTT<WithTTMember>::XExpectTT<WithTTMember::TT>的类型相同。但是,上面的代码无法编译。

我尝试用templatetypename关键字结合使用错误的行来跟踪编译器消息和我的本能,但是我无法让它工作。

我怎么表达我想要的?

任何C++版本都可以。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-18 05:25:51

您应该使用template关键字来判断T::TT是一个模板。

代码语言:javascript
运行
复制
template<typename T>
struct ExpectTWithTT {
    using X = ExpectTT<T::template TT>;
    //                    ^^^^^^^^
};
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66254082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档