以下のコードは、-std=c++0x
スイッチを使用してg ++バージョン4.5.0でコンパイルできません。私は、次のエラーメッセージが表示されます。g ++ 4.5のstd :: complexのコピー割り当て - 'operator +'の一致なし
error: no match for 'operator+' in 'std::pow [with _Tp = float, _Up = int, typename __gnu_cxx::__promote_2<_Tp, _Up>::__type = double](((const std::complex<float>&)((const std::complex<float>*)(& x))), ((const int&)((const int*)(&2)))) + y'
私は、これはアサイナブル要件はhereを述べに関連すると考えています。複合語のための私自身のコピー代入演算子を定義する必要がありますか?もしそうなら、どうですか? complex
が関与しているとき
#include <complex>
using namespace std;
int main(int argc, char *argv[]) {
complex<float> x,y;
x = pow(x,2); // ok
x = x + y; // ok
x = pow(x,2) + y; // error
return 0;
}
エラーは簡略化されています。「演算子+は複雑なものです。と複合体」 –
Cubbi
@parapura rajkumar:残念ながらそれはありません。 – user2023370
これは、VS2010でコンパイルするとおそらくtemplateまたはtypenameキーワードが必要です。 – AJG85