Il codice seguente non riesce a compilare con g ++ versione 4.5.0 utilizzando lo switch -std=c++0x
. Ottengo il seguente messaggio di errore:C++ 11 assegnazione di copia per std :: complex in g ++ 4.5 - nessuna corrispondenza per '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'
Credo che questo si riferisce al requisito assegnabile menzionato here. Devo definire il mio operatore di assegnazione delle copie per il complesso? Se é cosi, come?
#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;
}
L'errore, semplificato, dice "Non c'è operatore + che prende un complesso e un complesso " –
Cubbi
@parapura rajkumar: Sfortunatamente no. – user2023370
Questo compila su VS2010 forse ha bisogno di una parola chiave template o typename. – AJG85