は確かに、それは、Microsoftのコンパイラから予想されるエラーメッセージです」から'> &。何operator+
はあなたのコードがコンパイルされませんstd::string
山車を追加するとするために存在していないがあるので
// reverse_iterator TEMPLATE OPERATORS
template<class _RanIt> inline
reverse_iterator<_RanIt> operator+(
typename reverse_iterator<_RanIt>::difference_type _Off,
const reverse_iterator<_RanIt>& _Right)
{ // return reverse_iterator + integer
return (_Right + _Off);
}
:あなたは別のイテレータのためのいくつかのoperator+
テンプレートを定義<string>
ヘッダが含まれているため、それが起こる
理由があります。しかし、コンパイル時にコンパイラが上記のstd::operator+
が浮動小数点がreverse_iterator<_RanIt>::difference_type
に変換される可能性があるので検出可能性があることが検出されました。試したときにoperator+
_RanIt
の代わりに使用するタイプを推測することができず、std::string
からconst reverse_iterator<_RanIt>&
に変換されました。
あなたが述べたように、コンパイラは、他のイテレータ型のためoperator+
の他のバージョンを一致させようとします:
エラーC2784:「STD :: _ Array_const_iterator < _Ty、_Size>のstd ::演算子 +(_ Array_const_iterator < _Ty、_Size> :: difference_type、STD :: _ Array_const_iterator < _Ty、_Size>) ': は 用テンプレート引数を推定できなかった 'のstd :: _ Array_const_iterator < _Ty、_Size>のstd ::文字列 ''' から
エラーR C2784: 'のstd :: _ Array_iterator < _Ty、_Size>のstd ::演算子 +(_ Array_iterator < _Ty、_Size> :: difference_type、STD :: _ Array_iterator < _Ty、_Size>)': は 用テンプレート引数を推定できませんでしたあなたが最初の数値を文字列に変換し、連結すべき++ Cの 'のstd ::文字列' 'からのstd :: _ Array_iterator < _Ty、_Size>' ...側の注意点として
、(たとえば、追加する)。これはあなたのために働くはずです:
b += std::to_string(1.0f) + a;
何が '1.0f'ですか? – RoiHatam
@RoiHatamこれは浮動小数点の書き方です – Pavel
これは私の愚かな間違いです。私は 'std :: to_string'を数字に使うのを忘れていました。 –