小编Hel*_*oer的帖子

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

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

struct WithTTMember {
    template<typename> using TT = void;
};
Run Code Online (Sandbox Code Playgroud)

另一个类ExpectTT采用模板模板参数:

template< template<typename> typename TT >
struct ExpectTT {};
Run Code Online (Sandbox Code Playgroud)

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

第三个类ExpectTWithTT需要一个模板成员类型名为 的模板参数TT,并ExpectTT使用它进行实例化:

template<typename T>
struct ExpectTWithTT {
    using X = ExpectTT<typename T::TT>;  // this doesn't compile
};
Run Code Online (Sandbox Code Playgroud)

我希望ExpectTWithTT<WithTTMember>::XExpectTT<WithTTMember::TT>. 但是上面的代码无法编译。

我尝试在编译器消息和我的直觉之后使用templatetypename关键字的组合注入错误的行,但我无法让它工作。

我怎样才能表达我想要的?

任何 C++ 版本都可以。

c++ templates template-templates

4
推荐指数
1
解决办法
33
查看次数

在没有 RTTI 的情况下检查 std::any 的类型

我正在使用std::anyRTTI 并禁用异常。它可以工作并且std::any_cast<T>()能够检测类型是否正确,如std::any 中所解释的,没有 RTTI,它是如何工作的?std::any::type()但在没有 RTTI 的情况下会被禁用。

我想检查我的std::any对象是否包含给定类型的值。有什么办法可以做到这一点吗?

c++ types rtti stdany

3
推荐指数
1
解决办法
662
查看次数

标签 统计

c++ ×2

rtti ×1

stdany ×1

template-templates ×1

templates ×1

types ×1