El siguiente código no compila con la versión 4.5.0 de g ++ usando el modificador -std=c++0x
. Me sale el siguiente mensaje de error:C++ 11 asignación de copia para std :: complex en g ++ 4.5 - no coincide con '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'
creo que esto se relaciona con el requisito asignable mencionó here. ¿Debo definir mi propio operador de asignación de copias para complejo? ¿Si es así, cómo?
#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;
}
El error, simplificado, dice "No hay operador + que tome un complejo y un complejo " –
Cubbi
@parapura rajkumar: Desafortunadamente no es así. – user2023370
Esto compila en VS2010 quizás necesite la plantilla o la palabra clave typename. – AJG85