関数の引数のテンプレートを作成したいと思います。カスタムメモリアロケータ付きstd :: vector用のC++テンプレート
引数はアロケータ付きのstd::vector<type>
です。
デフォルトでは、デフォルトのメモリアロケータが使用されますが、カスタムアロケータも使用できます。
次のコードは機能しません。これを修正するには?
template <typename T, typename T2=std::allocator<T>>
void pad_zero(std::vector<T,T2> vec, uint32_t n){
uint32_t i;
for (i = 0; i < n; i++){
vec.push_back(0);
}
}
ありがとうございます。
http://coliru.stacked-crooked.com/a/3ad139c309b53f99。 '= std :: allocator'は必要ありません。 –
LogicStuff
どのように動作しませんか?ローカル変数 'vec'のみを変更します。 – KIIV
intel cコンパイラとgccの両方がテンプレート<...>内に<>を使用していると文句を言います。問題は、2番目のテンプレート引数が1番目のテンプレート引数に依存するようです。 – rxu