0

基本的にレジストリ デザイン パターンを実装するテンプレート クラスがあります。値はキーに登録され、コンテナに格納されます。

template <typename Key, typename Value, 
    template <typename...> class Container >
class registry
{
public:
    typedef Key   key_type;
    typedef Value value_type;


    typedef std::pair<key_type, value_type> element_type;
    typedef Container<element_type> container_type;

次に、次のようなシーケンス コンテナーで使用できます。

registry<const char*,void*, std::list> r1;
registry<const char*,void*, std::vector> r2;

エイリアスでも使用できます。

template <typename T>
using alias_container = std::array<T, 10>;

registry<const char*,void*, alias_container > r4;

しかし、次のように typedef で使用する方法がわかりません。

template <typename T>
class my_container2 
{
    typedef std::array<T,3> type;
};

私は基本的に次のようなものが欲しいです:

registry<const char*,void*, my_container2::type > r5;

どうもありがとうございました。

4

1 に答える 1

2

typeに提供されるテンプレートの種類によって異なりmy_container2ます。それを使用するには、次のようなテンプレートパラメーターを指定する必要があります

registry<const char*,void*, my_container2<some_type>::type > r4;
                                          ^^^^^^^^^ template type here

これは、標準型への反復子と同じ概念です。使用できませんcontainer_type::iterator。を使用する必要がありますcontainer_type<some_type>::iterator

于 2016-02-08T21:54:55.977 に答える