テンプレート引数として異なるコンテナを持つテンプレートクラス(アダプタ)を宣言するにはどうすればよいですか? テンプレートコンテナを持つテンプレートクラス
template<typename T, typename Container>
class MyMultibyteString
{
Container buffer;
...
};
そして、私は私のベクトルに基づいて、それをしたい: は例えば、私はクラスを宣言する必要があります。どのようにそれをハード定義するには? (誰かがそのような宣言を書くのを防ぐために
MyMultibyteString<int, vector<char>>
)。
また、このような構成の実装方法:容器にテンプレート引数を渡すことなく
MyMultibyteString<int, std::vector> mbs;
を。これは、あなたが書くことができるようになる
template<typename T, template <typename, typename> class Container>
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
class MyMultibyteString
{
Container<T, std::allocator<T>> buffer;
// ...
};
:
どのような素晴らしい、徹底的な答え。 –
@ScottJones:便利だとうれしいです:) –
@ScottJonesステートメントに関して: 'これは、std :: setとstd :: vector'の両方を受け入れることができる1つのクラステンプレートを書くことができないことを意味します: variadicテンプレートは問題を解決しますか? http://stackoverflow.com/a/20499809/2436175 – Antonio