Bonjour,
j'ai un probleme bete, c'est que les compilateurs que j'ai (icc, g++) ne disent rien lorsqu'une valeur complexe est utilisee comme lvalue. Alors qu'il genere bien une erreur pour les doubles, il ne dit rien pour les complexes. Y-a t'il une option de compilation qui permettrait au compilateur de signaler cette erreur ?
Voici l'exemple qui compile (alors qu'il ne devrait pas) :
Si vous decommentez les lignes pour double (et commentez celles avec complex<double> ), vous verrez que ca genere bien l'erreur souhaitee a la compilation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 #include <complex> #include <iostream> #include <vector> using namespace std; template<class T> class Vector { protected : vector<T> data_; public : Vector(int n) : data_(n) { } T operator()(int i) const { return data_[i]; } }; int main() { int n = 10; //Vector<double> x(n); //x(0) = 1.3; Vector<complex<double> > x(n); x(0) = complex<double>(1.3, 4.5); return 0; }
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.
Partager