に応じたクラスのメンバタイプを定義します。C++、我々は以下のクラスを持っている我々のコードでは、そのテンプレート
template<class A, class B>
class myClass
{
typedef std::list<Object<A,B>> MyList;
typedef std::map<A, typename mList::iterator> MyMap
MyList mList;
MyMap mMap;
}
クラスAがmetaprogrammedされ、それはように、文字列、int型とすることができます。 クラスAが "メタ文字列"の場合はマップを使用します。そうでない場合は、unordered_mapが使用されます。
私はいくつかのより多くのメタプログラミングを追加しようとしましたが、まだ成功していない:別のマップタイプを使用するための
template< class A, class B>
struct MapType // default
{
typedef std::list<Object<A,B>> MyList;
typedef std::unordered_map<A,B> MyMap;
}
//TODO struct with templated A (string) to use std::map
template<class A, class B>
class myClass
{
???? // if A ~ String define myMap to MAP . otherwise unordered
MyList mList;
MyMap mMap;
}
他の提案も同様に理解されるであろう。
おかげ
正確に「メタ文字列」とは何ですか?特定のクラスですか?特定のインターフェイスを実装するクラスですか?特定のプロパティを持つクラス? – celtschk
最初のコードブロックで、 'MyMap'をこの' typedef std :: map MyMap'のように定義するべきではありませんか? – Danh