我从boost :: hana获得了这段代码:
template <typename Storage>
struct KeyAtIndex {
template <std::size_t i>
using apply = decltype(hana::first(hana::at_c<i>(std::declval<Storage>())));
};
template <typename ...Pairs>
struct make_map_type {
using Storage = hana::basic_tuple<Pairs...>;
using HashTable = typename detail::make_hash_table<
detail::KeyAtIndex<Storage>::template apply, sizeof...(Pairs)
>::type;
using type = detail::map_impl<HashTable, Storage>;
};
我想知道detail::KeyAtIndex<Storage>::template
的意思是什么,为什么在这里使用template
关键字? c ++ iso标准中有什么东西可以解释一下吗?