多くのテンプレートを使用して C++ でプログラムを開発しています。
インスタンス化後のいくつかのテンプレート クラスの定義を読みたいと思います。
たとえば、main.cc:
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pb;
typedef trie<int, null_type> trie_t;
ext/pb_ds/detail/container_base_dispatch.hpp:
/// Specialization for PATRICIA trie map.
template<typename Key, typename Mapped, typename _Alloc, typename Policy_Tl>
struct container_base_dispatch<Key, Mapped, _Alloc, pat_trie_tag, Policy_Tl>
ext/pb_ds/assoc_container.hpp:
#define PB_DS_BRANCH_BASE \
detail::container_base_dispatch<Key, Mapped, _Alloc, Tag, Policy_Tl>::type
template<typename Key, typename Mapped, typename Tag,
typename Node_Update, typename Policy_Tl, typename _Alloc>
class basic_branch : public PB_DS_BRANCH_BASE
...
#define PB_DS_TRIE_BASE \
basic_branch<Key,Mapped,Tag, \
typename PB_DS_TRIE_NODE_AND_IT_TRAITS::node_update, \
typename __gnu_cxx::typelist::create2<_ATraits, \
PB_DS_TRIE_NODE_AND_IT_TRAITS >::type, _Alloc>
template<typename Key,
typename Mapped,
typename _ATraits = \
typename detail::default_trie_access_traits<Key>::type,
typename Tag = pat_trie_tag,
template<typename Node_CItr,
typename Node_Itr,
typename _ATraits_,
typename _Alloc_>
class Node_Update = null_node_update,
typename _Alloc = std::allocator<char> >
class trie : public PB_DS_TRIE_BASE
すべての継承とテンプレート メタプログラミング ロジックが完了した後、クラス trie_t の仕様を読み取る方法は?