У меня есть этот код:
auto myTuple = hana::tuple_t<int, char*, long>;
std::cout << boost::typeindex::type_id<decltype(myTuple[1_c])>().pretty_name() << std::endl;
Это выводит:
boost::hana::type_impl<char*>::_
Я хочу получить доступ к типу 'char*', но если я это сделаю:
std::cout << boost::typeindex::type_id<decltype(myTuple[1_c])::type>().pretty_name() << std::endl;
Он выводит:
error: 'decltype(myTuple[1_c])' (aka 'boost::hana::type_impl<char *>::_ &') is not a class, namespace, or scoped enumeration
std::cout << boost::typeindex::type_id<decltype(myTuple[1_c])::type>().pretty_name() << std::endl
Это потому, что это ссылка, если я делаю:
std::cout << boost::typeindex::type_id<decltype(boost::hana::traits::remove_reference(myTuple[1_c]))::type>().pretty_name() << std::endl;
Затем он выводит 'char *'.
Это способ доступа к типам tuple_t? Должен быть менее громоздкий способ.