[C++] C++でstaticのarrayで値としてenumを使いたい

バージョン

C++ 11

概要

staticとしてstd::arrayをenumの値を使って初期化して使いたいがコンパイルエラーとなってしまう。
そんな時はconstexprを使う。

コード

// .h
class AnimalShop
{
public:
    enum class AnimalType {
        DOG = 0,
        CAT,
        MOUSE,
        LION,
        ELEPHANT
    };
    
    // これはNG
    // static std::array<AnimalType, 2> CATEGORY = {AnimalType::DOG , AnimalType::CAT};
    // これはOK
    static constexpr std::array<AnimalType, 2> CATEGORY = {AnimalType::DOG , AnimalType::CAT};
};



Effective Modern C++ ―C++11/14プログラムを進化させる42項目

Effective Modern C++ ―C++11/14プログラムを進化させる42項目