Здравствуйте, B0FEE664, Вы писали:
BFE>Нет при таком подходе никакой типовой надёжности! Вот такое скомпилируется:
BFE>BFE>UMBA_ENUM_CLASS_IMPLEMENT_UNDERLYING_TYPE_ARITHMETIC_OPERATORS(CEEE)
BFE> CEEE x = CEEE::two + 1;
BFE>
BFE>при том, что в CEEE:
BFE>BFE>enum class CEEE
BFE>{
BFE> zero,
BFE> one,
BFE> two
BFE>};
BFE>
Что-то удивительное ты пишешь. Вот такое НЕ компилируется:
http://coliru.stacked-crooked.com/a/e56da567f0d45c7c
enum class CEEE
{
zero,
one,
two
};
int main()
{
const CEEE eee = CEEE::two + 1; // error: no match for 'operator+' (operand types are 'CEEE' and 'int')
}
В устройство макроса я не вникал, если что. Я исходил из предположения, что он реализован через enum class.