2

私はそのようなことを達成したいと思います:

#include <string>
#include <array>

enum class MyEnum{
  A,
  B,
  C
};

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

これで、テンプレート値に渡されたすべてを保持できる配列ができました。しかし、どうすればこの配列にテンプレートパラメータを設定できますか?

4

2 に答える 2

6

MyEnum必要なのがすべての値をに入れることである場合は、それらを初期化リストに解凍しarray、それを使用し初期化し、直接初期化を使用して初期化することができます。array

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

ただし、この構文を使用するには、かなり新しいコンパイラが必要です。

私の答えを訂正してくれたXeoに感謝します。

于 2012-04-28T16:12:23.817 に答える
0
MyClass()
{
    std::initializer_list<MyEnum> il( {Args...} );
    std::copy (il.begin(), il.end(), array.begin());
}
于 2012-04-28T16:42:25.357 に答える