имея член перечисления, получить тип перечсления
От: niXman Ниоткуда https://github.com/niXman
Дата: 14.08.13 12:00
Оценка:
всех приветствую!

суть задачи описана в названии топика, и чтоб долго не объяснять, приведу простой пример, который, полагаю, объяснит лучше слов:
#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 {
    static_assert(std::is_enum<T>::value, "T is not a enum");
    
    using type = typename std::conditional<
         std::is_same<T, e1>::value
        ,enum_e1
        ,enum_e2
    >::type;
};

int main() {
    using et = typename enum_type<e1v1>::type; // error: expected a type, got 'e1v1'
    static_assert(std::is_same<et, enum_e1>::value, "error!");
}


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