myoukakuのブログ

C++でゲームエンジンを作っていきます。

static_mapのヘルパー関数、make_static_mapを書いた(0)

static_mapが便利なので重宝しています。

スタックを使用するmapを作りました - Faith and Brave - C++で遊ぼう

これがあれば、エラーコードとメッセージの対応など、かなりの部分でswitch-caseや危険なテーブル引きを撲滅することができます。

しかし不満点もあって、

  • 要素の型
  • 要素の数

を明示的に書かなければならないのは地味にめんどくさいです。特に要素数はコロコロ変わる可能性がありますが、そのたびに注意して編集しなければいけません。

そこでstatic_mapを生成するヘルパー関数、make_static_mapを書いてみました。最終的なゴールは

enum class Color {
    Red,
    Green,
    Blue,
};

static const auto map = make_static_map(
    Color::Red,   "Red",
    Color::Green, "Green",
    Color::Blue,  "Blue"
);

std::cout << map[Color::Red] << std::endl;    // "Red"

と書けるようにすることです。

続く。