strong_typedef через enum class
От: удусекшл  
Дата: 24.01.22 09:08
Оценка:
Здравствуйте!

А в чем проблема делать strong typedef через enum и просто переопределить все нужные операторы? Типа:
enum class NewType: int { dummy };
IMPLEMENT_ARITHMETIC_OPERATORS(NewType)
IMPLEMENT_RELATION_OPERATORS(NewType)
IMPLEMENT_UNDERLYING_TYPE_EQUAL_OPERATORS(NewType)

// или 

enum class NewFlagType: unsigned { dummy };
IMPLEMENT_BIT_OPERATORS(NewFlagType)
IMPLEMENT_UNDERLYING_TYPE_EQUAL_OPERATORS(NewFlagType)




При этом можно делать различия — если нужен арифметический тип — переопределяем всякие +-/*, если это флаговый typedef — то переопределяем только битовые операторы.

Вроде я как-то не видел такого, обычно делают класс/структуру с операторами преобразования в underlying_type.

Могут быть проблемы от того, что реально переменная такого типа принимает значения, которые не перечислены в enum?
Тогда, может, достаточно будет добавить в enum значения min_value/max_value?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.