为全局 constexpr 变量生成唯一值

Generate unique values for global constexpr variables

我正在使用全局 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 是否有可能用正确的值自动初始化它们? 我认为它可以通过预处理器宏来完成,但我还没有充分使用它来确切地知道如何。

有什么建议吗?

枚举适用于此:

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

对于更复杂的情况,例如单独的定义或枚举不合适的任何地方,有基于宏的解决方案,例如 BOOST_PP_COUNTER 结合 BOOST_PP_UPDATE_COUNTER