НапримерКак я могу получить тип значения члена перечисления
template EnumValueType(T)
if (is(T == enum))
{
alias EnumValueType = /* ??? */;
}
enum E: ubyte {e0 = 123}
enum D: float {d0 = 0.5}
void main()
{
E e;
D d;
assert(is(EnumValueType!(typeof(e)) == ubyte));
assert(is(EnumValueType!(typeof(d)) == float));
}
До сих пор я могу обнаружить, только если это перечисление. Я вижу способ сделать это, но это плохо. Он состоял бы в итерации через AliasSeq seq, выполненный из базовых типов D, и чтобы узнать, может ли T быть переведенным на seq [n].
Любая другая идея?
Я вижу, на самом деле черта, в которой я нуждался, уже находится в фобосах ... –