是否可以使用不同的枚举类型作为非类型模板参数

克劳斯

背景:

我想从枚举值创建类型来处理它们与 boost::sml 相关。

所以我想简单地通过提供枚举值来创建一个类型,例如:

template <typename ENUM_T, ENUM_T VAL >
class Bla
{
};

enum A
{
    a1,
    a2
};

enum B
{
    b1,
    b2
};

int main()
{
    Bla<A::eins> x;
}

但这不起作用,因为我必须在使用此枚举类型的非类型模板参数之前定义枚举值的类型。

任何想法?

用户7860670

从 C++17 开始,可以使用具有自动类型推导的非类型模板参数:

#include <type_traits>

template <auto val>
class Bla
{
    static_assert(::std::is_enum_v<decltype(val)>); // constraint parameter types to enums
};

在 C++17 之前,您需要提供非类型参数类型作为另一个模板参数:

template <typename T, T val>
class Bla
…
Bla<A, A::eins> x;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

非类型模板参数

来自分类Dev

是否可以保证对非类型模板参数的专业化具有唯一的不同成员指针的参数?

来自分类Dev

引用作为非类型模板参数

来自分类Dev

std :: source_location作为非类型模板参数

来自分类Dev

将函数指针作为非类型模板参数传递

来自分类Dev

模板非类型模板参数

来自分类Dev

是否可以推断左值引用非类型模板参数?

来自分类Dev

当重载`std :: ostream`运算符时,是否可以更改默认非类型模板参数?

来自分类Dev

使用指向数据成员的指针作为非类型模板参数

来自分类Dev

使用左值引用作为非类型模板参数

来自分类Dev

使用左值引用作为非类型模板参数

来自分类Dev

使用decltype为函数生成的非类型模板参数

来自分类Dev

为什么要使用非类型模板参数?

来自分类Dev

为什么要使用非类型模板参数?

来自分类Dev

非类型模板参数和要求

来自分类Dev

指针非类型模板参数

来自分类Dev

非类型模板参数如何编译?

来自分类Dev

在C ++中是否可以有一个“通用”模板参数,该参数可以是非类型模板参数,也可以是类型?

来自分类Dev

如何使用非类型模板参数和类型模板参数的混合来对函数进行模板化?

来自分类Dev

如何使用非类型模板参数和类型模板参数的混合来对函数进行模板化?

来自分类Dev

具有模板非类型模板参数的功能模板

来自分类Dev

有没有一种方法可以使用Boost Test测试非类型模板?

来自分类Dev

非类型模板参数的推断类类型的占位符是否是C ++ 20功能?

来自分类Dev

部分专注于错误类型的非类型模板参数

来自分类Dev

用户定义类型的非类型模板参数

来自分类Dev

非类型模板参数不能具有类型

来自分类Dev

是否可以使用不同类型的参数将谓词与“ and”链接起来?

来自分类Dev

模板递归中的非类型模板参数变窄

来自分类Dev

C ++非类型模板的模板参数,请参考* this

Related 相关文章

  1. 1

    非类型模板参数

  2. 2

    是否可以保证对非类型模板参数的专业化具有唯一的不同成员指针的参数?

  3. 3

    引用作为非类型模板参数

  4. 4

    std :: source_location作为非类型模板参数

  5. 5

    将函数指针作为非类型模板参数传递

  6. 6

    模板非类型模板参数

  7. 7

    是否可以推断左值引用非类型模板参数?

  8. 8

    当重载`std :: ostream`运算符时,是否可以更改默认非类型模板参数?

  9. 9

    使用指向数据成员的指针作为非类型模板参数

  10. 10

    使用左值引用作为非类型模板参数

  11. 11

    使用左值引用作为非类型模板参数

  12. 12

    使用decltype为函数生成的非类型模板参数

  13. 13

    为什么要使用非类型模板参数?

  14. 14

    为什么要使用非类型模板参数?

  15. 15

    非类型模板参数和要求

  16. 16

    指针非类型模板参数

  17. 17

    非类型模板参数如何编译?

  18. 18

    在C ++中是否可以有一个“通用”模板参数,该参数可以是非类型模板参数,也可以是类型?

  19. 19

    如何使用非类型模板参数和类型模板参数的混合来对函数进行模板化?

  20. 20

    如何使用非类型模板参数和类型模板参数的混合来对函数进行模板化?

  21. 21

    具有模板非类型模板参数的功能模板

  22. 22

    有没有一种方法可以使用Boost Test测试非类型模板?

  23. 23

    非类型模板参数的推断类类型的占位符是否是C ++ 20功能?

  24. 24

    部分专注于错误类型的非类型模板参数

  25. 25

    用户定义类型的非类型模板参数

  26. 26

    非类型模板参数不能具有类型

  27. 27

    是否可以使用不同类型的参数将谓词与“ and”链接起来?

  28. 28

    模板递归中的非类型模板参数变窄

  29. 29

    C ++非类型模板的模板参数,请参考* this

热门标签

归档