typedef boost::variant<long long,double,string> possibleTypes ;
set<possibleTypes,less<possibleTypes> > ascSet ;
set<possibleTypes,greater<possibleTypes> > descSet ;
Wenn ich versuche zu kompilieren, bekomme ich eine Reihe von Fehlern in einigen Bibliothekskopfzeilen.
Aber wenn ich die dritte Zeile entfernen (die mit descSet
), kompilieren Sie den Code ganz gut.std :: set gefüllt mit boost :: variant Elemente können nicht absteigend sortiert werden?
Was ist das Problem? Kann boost :: variant Objekte nicht in nachkommender Reihenfolge sortiert werden ??
Edit:
ich Visual Studio 2005 und bin mit 1.38.0 steigern und die folgende Befehlszeile:
cl /EHsc /I"C:\boost_1_38_0" test.cpp
EDIT2 Wie es vorgeschlagen wurde, von Doug T, wenn ich definieren diese:
bool operator>(const possibleTypes& a, const possibleTypes& b){
return b < a ;
}
Dann wird der folgende Code nicht kompiliert:
possibleTypes pt1="a", pt2="b" ;
greater<possibleTypes> func ;
cout << func(pt1,pt2) << endl ;
Allerdings stellt dieser Code nur fein:
possibleTypes pt1="a", pt2="b" ;
cout << (pt1 > pt2) << endl ;
mir jemand zu verstehen, warum helfen könnte ??
ich mit VC versucht ++ 2005 und GCC 3.4.6
Welche Version von Boost verwenden Sie? Ich habe gerade Ihren Code mit 1.38.0 und VC++ 9.0 ausprobiert und ohne Probleme kompiliert. – Ferruccio
Wirklich? Es muss die Copiler-Version sein (ich habe gerade meinen Beitrag aktualisiert) – GetFree
Kannst du wenigstens die ersten Fehlermeldungen angeben? I.e. diejenigen über die Deklaration selbst, nicht diejenigen, die daraus resultieren, dass descSet nicht richtig definiert ist. – MSalters