std::wstringstream
に異なるタイプの値を書き込む必要があります。一度に1つ以上の値を書き込む必要があります。私はこのようにそれを実装しようとしています:STLコンテナのテンプレート機能を指定する方法は?
wstringstream _str;
template<typename ValueType> //(1)
void WriteValue(const ValueType& val)
{
_str << val;
}
template<typename ValueType> //(2)
void WriteValue(const std::vector<ValueType>& vals)
{
for (auto it = vals.begin(); it!= vals.end(); ++it)
{
WriteValue<ValueType>(*it);
_str << L" ";
}
}
template<typename ValueType>
void WriteRecord(const std::wstring& name, const ValueType & val)
{
_str << name;
WriteValue<ValueType>(val);
}
void Foo()
{
int bar = 0;
WriteRecord<int>(L"Lorem", bar); //it's okay
std::vector<int> buz(4, 0);
WriteRecord<int>(L"ipsum", buz); //it's error
}
私は次のエラーました:そう
"cannot convert argument 2 from 'std::vector< int, std::allocator <int> >'
to 'int &'". As seen compiler tries to pass a vector to (1), not (2).
はなぜ?それは(2)特殊な関数のテンプレートを選択することは可能ですか?ここで
よろしくお願いいたします。 –