typedef boost::variant<long long,double,string> possibleTypes ;
set<possibleTypes,less<possibleTypes> > ascSet ;
set<possibleTypes,greater<possibleTypes> > descSet ;
コンパイルしようとすると、いくつかのライブラリヘッダーにエラーが発生します。
しかし、3行目(descSet
のもの)を削除しても、コードはうまくコンパイルされます。boost :: variant要素でいっぱいのstd :: setを子孫でソートすることはできませんか?
問題が何ですか? boost :: variantオブジェクトを子孫の順序でソートすることはできませんか?
編集:
私は、Visual Studio 2005を使用し、1.38.0を高めることだし、次のコマンドライン:それはダグTにより、提案されたとして
cl /EHsc /I"C:\boost_1_38_0" test.cpp
EDIT2 、もしIこれを定義:
bool operator>(const possibleTypes& a, const possibleTypes& b){
return b < a ;
}
その後、次のコードはコンパイルされません。
possibleTypes pt1="a", pt2="b" ;
greater<possibleTypes> func ;
cout << func(pt1,pt2) << endl ;
しかし、このコードはうまくコンパイル:
possibleTypes pt1="a", pt2="b" ;
cout << (pt1 > pt2) << endl ;
誰もが理由を理解するために私を助けてもらえます?
私は<オペレータがブースト::バリアントではなく>オペレータのために定義されて表示されますVC++ 2005とGCC 3.4.6で
使用しているBoostのバージョンは?私はあなたのコードを1.38.0とVC++ 9.0で試してみましたが、問題なくコンパイルしました。 – Ferruccio
本当ですか?これはコピー機のバージョンでなければなりません(私は自分の投稿を更新しました) – GetFree
少なくとも最初のエラーメッセージは提供できますか?私。 descSetが不適切に定義された結果ではなく、宣言自体に関するものです。 – MSalters