如果模板参数是另一个模板的某个实例,则类型特征测试

有趣的

假设在下面的代码中,意图是允许TinBar<T>是 a Foo<U>for any U

template<typename U>
class Foo { };

template<typename T, typename = std::enable_if_t< /*T is Foo<U> for any U*/>>
class Bar {
    // ...
};

有什么我可以替换/*T is Foo<U> for any U*/的吗?

巴里

您可以编写一个通用特征来匹配任何专业化:

template <typename T, template <typename...> class Z>
struct is_specialization_of : std::false_type { };

template <typename... Args, template <typename....> class Z>
struct is_specialization_of<Z<Args...>, Z> : std::true_type { };

在您的具体情况下,这将是:

is_specialization_of<T, Foo>::value // <== T is some kind of Foo

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

测试一个对象是否是另一个实例类型的子类

来自分类Dev

参数包未使用'...'扩展-另一个gcc可变参数模板错误?

来自分类Dev

检查模板参数是否等于另一个模板参数的基类

来自分类Dev

访问另一个模板中的模板参数

来自分类Dev

如何将模板内部的模板作为模板模板参数传递给另一个模板?

来自分类Dev

如何指定模板参数为类模板,并从另一个模板参数推断其模板类型?

来自分类Dev

如何使模板类的一个实例化与同一模板的另一个实例成为朋友

来自分类Dev

如何为另一个泛型类型的特征绑定表示类型参数上的特征绑定?

来自分类Dev

使用一个方法的返回类型作为一个奇怪的重复模板类中另一个方法的参数类型

来自分类Dev

C ++:部分将模板的类型参数专门化为另一个模板类的成员类型

来自分类Dev

如何将模板实例传递给另一个模板的另一个实例?

来自分类Dev

Azure ARM模板-如何将链接模板的输出变量作为参数传递给另一个模板?

来自分类Dev

我可以将模板函数用作另一个模板的参数吗?

来自分类Dev

在另一个模板声明中使用默认模板参数

来自分类Dev

C ++-获取模板的类型名,其中该类用作另一个模板

来自分类Dev

如何将模板参数固定为基于另一个模板参数的一个枚举类?

来自分类Dev

通过具有任何特殊化类型的另一个模板来约束模板参数

来自分类Dev

如果模板类型是另一个模板,则运行代码

来自分类Dev

访问另一个模板中的模板参数

来自分类Dev

模板调用进入另一个模板

来自分类Dev

检查模板参数类型是否被另一个函数接受的static_assert

来自分类Dev

使用另一个模板的模板

来自分类Dev

用另一个类的模板参数实例化一个模板类

来自分类Dev

对于给定的类型参数,如何声明一个特征与另一个泛型特征等效?

来自分类Dev

如何将可变参数模板参数转换为另一种类型以调用另一个函数?

来自分类Dev

如何将模板化类实例作为模板参数传递给另一个模板?

来自分类Dev

如何使用当前类模板作为另一个模板的模板参数?

来自分类Dev

将一个函数模板的模板参数映射到另一个 (c++) 的模板参数

来自分类Dev

将模板作为参数传递给另一个模板

Related 相关文章

  1. 1

    测试一个对象是否是另一个实例类型的子类

  2. 2

    参数包未使用'...'扩展-另一个gcc可变参数模板错误?

  3. 3

    检查模板参数是否等于另一个模板参数的基类

  4. 4

    访问另一个模板中的模板参数

  5. 5

    如何将模板内部的模板作为模板模板参数传递给另一个模板?

  6. 6

    如何指定模板参数为类模板,并从另一个模板参数推断其模板类型?

  7. 7

    如何使模板类的一个实例化与同一模板的另一个实例成为朋友

  8. 8

    如何为另一个泛型类型的特征绑定表示类型参数上的特征绑定?

  9. 9

    使用一个方法的返回类型作为一个奇怪的重复模板类中另一个方法的参数类型

  10. 10

    C ++:部分将模板的类型参数专门化为另一个模板类的成员类型

  11. 11

    如何将模板实例传递给另一个模板的另一个实例?

  12. 12

    Azure ARM模板-如何将链接模板的输出变量作为参数传递给另一个模板?

  13. 13

    我可以将模板函数用作另一个模板的参数吗?

  14. 14

    在另一个模板声明中使用默认模板参数

  15. 15

    C ++-获取模板的类型名,其中该类用作另一个模板

  16. 16

    如何将模板参数固定为基于另一个模板参数的一个枚举类?

  17. 17

    通过具有任何特殊化类型的另一个模板来约束模板参数

  18. 18

    如果模板类型是另一个模板,则运行代码

  19. 19

    访问另一个模板中的模板参数

  20. 20

    模板调用进入另一个模板

  21. 21

    检查模板参数类型是否被另一个函数接受的static_assert

  22. 22

    使用另一个模板的模板

  23. 23

    用另一个类的模板参数实例化一个模板类

  24. 24

    对于给定的类型参数,如何声明一个特征与另一个泛型特征等效?

  25. 25

    如何将可变参数模板参数转换为另一种类型以调用另一个函数?

  26. 26

    如何将模板化类实例作为模板参数传递给另一个模板?

  27. 27

    如何使用当前类模板作为另一个模板的模板参数?

  28. 28

    将一个函数模板的模板参数映射到另一个 (c++) 的模板参数

  29. 29

    将模板作为参数传递给另一个模板

热门标签

归档