
Envoyé par
marcolo
Voici l'exemple qui compile (alors qu'il ne devrait pas)
Il doit compiler, et il compile.
Mais ton problème n'a rien à voir avec std::complex<>. Teste :
1 2 3 4 5 6 7 8 9 10
|
struct S {} s;
int main {
Vector< S > x(10);
x(0)= s;
} |
Tu observes une différence entre un double et un std::complex< double > parce que l'un est un class type et pas l'autre. Quand tu écris
x(0)= complex< double >(1.3, 4.5);
le compilateur lit
1 2
|
x(0).operator=(complexe< double >(1.3, 4.5)) |
ce qui est valide. À l'exécution c'est une no-op ; as-tu regardé la valeur de x(0) après l'affectation ?
Je precise que je veux implementer un operateur() const qui renvoie une valeur et pas une reference, et je voudrais que le compilo signale les endroits ou ya x(i) = quelque chose.
Ce n'est pas possible, sauf à suivre le conseil de alexisdm.
Pourquoi tiens-tu à ce que ton operator() const retourne une valeur ?
Partager