1
我有這樣的代碼:訪問類型一tuple_t的
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類型的方法嗎?一定不那麼繁瑣。
「出於這個原因,類型提供了一元運算符的重載,可用於將左值轉換爲右值。因此,當使用可能引用類型對象的結果時,可以使用+確保在獲取它的嵌套::類型之前獲得一個右值「。謝謝! – chila