Здравствуйте, 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 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)