Эмуляция «enum class» или надежная альтернатива для MSVC 10.0

Я ищу хакерское решение следующей проблемы: GCC 4.4+ принимает следующий код c ++ 0x:

enum class my_enum
{
    value1,
    value2
};

Что позволяет использовать подобное:

my_enum e = my_enum::value1;

со всеми прибавками, которые это приносит. Я хотел бы сделать этот код совместимым с MSVC 2010, чтобы синтаксис использования не менялся. Я уже размышлял об этом до здесь , и принятый ответ работает, но необходимость в двух разных именах для значений enum и enum убивает совместимость двух подходов. Это, конечно, делает невозможным замену кода C ++ 0x как есть. Мне было интересно, могут ли уловки #undef и #define обойти это, позволяя использовать синтаксис, подобный enum class (возможно, без строгого безопасность типов и т. д.), но как минимум такой же синтаксис. Спасибо!

12
задан Community 23 May 2017 в 12:08
поделиться