、ノーC++テンプレートの第一人者だと正しい操作を行ってくださいカスタムアロケータcompatibilty
could not convert ‘bar’ from ‘std::vector<int, CustomAlloc<int, [...] >}’ to ‘std::vector<int>’
でstd::vector<int, CustomAlloc>
結果のインスタンスを持つFOOを呼び出しますもし私が間違っているのであれば、私の理解はstd::vector<int>
がデフォルトでstd::vector<int, std::allocator<int> >
(gcc 7.1.1.-3)になっており、したがって完全に無計画のタイプを定義しています。
これは私がfoo
呼び出し可能std::vector<int, CustomAlloc>
を使用して、次に付属させるためにいくつかの解決策を見つけようとしていますと述べたbeeingて。
template<typename Allocator>
void foo(std::vector<int, Allocator> &bar);
私はアロケータ仕様はテンプレートを伝播する方法を嫌い、私はそれはSTLがどのように動作するかだと思います。
私の質問は、foo
が具体的にはint
で動作しているので、この問題をどのように解決しますか?
PS:私はちょうどこの問題を解決するための標準で全く新しい名前空間がある良いもの
異なるタイプのパラメータを取るために 'foo'が必要なのかどうかは不明ですが、' CustomAlloc'だけを使用する必要がある場合は 'void foo(std :: vector &bar);'テンプレートなしで。 –