Я ищу хакерское решение следующей проблемы: 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
(возможно, без строгого безопасность типов и т. д.), но как минимум такой же синтаксис. Спасибо!