У меня есть кортеж типа hana
auto mytypes =\
bh::make_tuple(bh::type_c<T1>,
bh::type_c<T2>,
bh::type_c<T3>,
bh::type_c<T4>);
Каждый из T
- это простые структуры C ++. Все они имеют член
static const std::string mtype
Моя функция в настоящее время
process(const std::string& intype)
{
if (intype==T1::mtype)
get<T1>();
else if (intype==T2::mtype)
get<T2>();
...
}
, и у меня есть шаблонная функция
template <typename T> T* get();
Как запустить функцию get()
только для типа T, где T::mtype == intype
? Цель состоит в том, чтобы определить, какой тип Ti
выбрать из значения времени выполнения intype
. Вместо того, чтобы иметь явные операторы if для каждого возможного типа, я хотел бы сгенерировать это поведение с помощью чего-то вроде hana :: for_each, но применять только тогда, когда тип соответствует