Re[5]: operator* для enum class
От: sergii.p  
Дата: 24.09.21 07:46
Оценка:
Здравствуйте, rg45, Вы писали:

R>Чем плох to_underlying? Да он появляется только в C++23, но сделать собственную версию — как два пальца об асфальт. Зато сразу понятна семантика, без стеклянных шаров. И никаких намеков на то, что обязано существовать обратное преобразование не видно, по-моему.


вот мне кажется, что в стандарте хотели как лучше, а получилось как всегда. std::to_underlying — слишком длинное название для такой часто встречающейся функции. Я использую имя cast. С именем области у меня вопросы. Но можно придумать тоже что-нибудь короткое трёхбуквенное (utl например).
enum class UserId{};
UserId id;
std::cout << "User id: " << utl::cast(id);


Хорошо бы ещё переопределять операторы << >>. Тогда потребность в таких функциях-костылях отпадает вовсе. Фактически надо то зачастую вычитать из базы, записать в базу, вывести в лог. Внутри всегда использовать тип без приведения. Но это конечно только в теории. На практике функцию cast я леплю постоянно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.