Re[2]: имея член перечисления, получить тип перечсления
От: niXman Ниоткуда https://github.com/niXman
Дата: 14.08.13 12:13
Оценка:
Здравствуйте, rusted, Вы писали:

R>decltype(e1v1)


не юзабильно...

решил так:

#include <iostream>
#include <type_traits>

enum e1 { e1v1, e1v2 };
enum e2 { e2v1, e2v2 };

struct enum_e1;
struct enum_e2;

template<typename T>
struct enum_type {
    using type = typename std::conditional<
         std::is_same<T, e1>::value
        ,enum_e1
        ,enum_e2
    >::type;
};

template<typename T>
void func(T) {
    static_assert(std::is_enum<T>::value, "T is not a enum");

    using et = typename enum_type<T>::type;
    static_assert(std::is_same<et, enum_e1>::value, "error!");
}

int main() {
    func(e2v2);
}


всем спасибо! вопрос закрыт.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.