用constexpr函数替换宏来定义枚举

时间:2015-09-26 02:57:22

标签: c++ c++11 enums macros

我有一个像

这样的宏

#define ascii_to_3bit(c) c & 0x60 - 1

我试图将其替换为:

constexpr const std::uint8_t ascii_to_3bit(char c)
{
    return c & 0x60 - 1;
}

我正在使用它:

enum class Column
{
    A = ascii_to_3bit('a'),
    B = ascii_to_3bit('b'),
    C = ascii_to_3bit('c'),
    D = ascii_to_3bit('d'),
    E = ascii_to_3bit('e'),
    F = ascii_to_3bit('f'),
    G = ascii_to_3bit('g'),
    H = ascii_to_3bit('h')
};

它可以作为一个宏工作正常但是死掉了#34;函数调用必须有一个带常量表达式的常量值"当它是一个功能。

有可能吗?编译器是VS2015发布的任何东西。

0 个答案:

没有答案