为全局constexpr变量生成唯一值

时间:2019-06-26 11:06:57

标签: c++ c++11 constexpr

我正在使用全局constexpr作为访问地图的键,而我想知道是否存在一种使用下一个可用整数自动初始化它们的方法。

constexpr size_t ON_EVENT_X = 0;
constexpr size_t ON_EVENT_Y = 1;
constexpr size_t ON_EVENT_Z = 2;

给定ON_EVENT_X,ON_EVENT_Y和ON_EVENT_Z是否可以用正确的值自动初始化它们? 我认为可以使用预处理器宏来完成此操作,但是我还没有足够地使用它来确切地了解操作方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

枚举适用于此:

enum : std::size_t {
    ON_EVENT_X,
    ON_EVENT_Y,
    ON_EVENT_Z,
};

对于更复杂的情况,例如单独的定义或不适合枚举的任何情况,可以使用基于宏的解决方案,例如将BOOST_PP_COUNTERBOOST_PP_UPDATE_COUNTER结合使用。