c++ - 从可变参数模板创建 std::array

标签 c++ templates c++11 variadic-templates

我想实现这样的目标:

#include <string>
#include <array>

enum class MyEnum{
  A,
  B,
  C
};

template<MyEnum... Args>   
class MyClass{
  public:
    MyClass()
    {
    }
  private:
    std::array<MyEnum, sizeof...(Args)> array;   
};

现在我有一个数组,它可以保存所有传递给模板的值。但是我怎样才能用模板参数填充这个数组呢?

最佳答案

如果您想要将所有 MyEnum 值放入 array,那么您可以将它们解压到一个初始化列表中并初始化 array 用它 用直接初始化来初始化它:

MyClass() : array {{ Args... }} { }

但是,您需要一个相当新的编译器才能使用此语法。

感谢 Xeo 更正我的答案。

关于c++ - 从可变参数模板创建 std::array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10364874/

相关文章:

c++ - 为什么我要把一个 vector 放在堆上?

c++ - (加速 C++)章节管理内存

c++ - 用 g++ 编译 C++11

c++ - 此结构的生命周期和内存设置

c++ - std::vector 上的嵌套循环

c++ - 在其声明之上调用函数

c++ - 如何在 C++ 中以相反的方向读取文件?

java - 类似于 Enlive 的基于选择器的 Java 模板库

c++ - 如何重构容器以直接使用谓词方法?

c++ - 将 lambda 推导为 std::function<T>