Здравствуйте, koenjihyakkei, Вы писали:
K>Идея нравится, только звездочка, мне кажется, органичнее бы смотрелась:
На мой взгляд, в С++ префиксная звёздочка семантически крепко ассоциируется с получением значения, на которое есть некий указатель или другой косвенный "хранитель" (типа optional). использование его для целей получения underlying type мне видится сомнительной идеей.
Опять же, скажем, если есть
enum EN{ A, B, C };
optional<EN> o;
то код
auto x = +o.value();
auto x = +*o;
смотрится лучше/понятнее (на мой вкус), чем
auto x = *o.value();
auto x = **o;
Кроме того, префисный плюс можно применять в шаблонном коде (не обязательно значит, что нужно), так что он будет равно успешно работать как со встроенными интегральными типами, так и с перечислениями.