1

多くのテンプレートを使用して 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 の仕様を読み取る方法は?

4

0 に答える 0