typedef boost::variant<long long,double,string> possibleTypes ;
set<possibleTypes,less<possibleTypes> > ascSet ;
set<possibleTypes,greater<possibleTypes> > descSet ;
Когда я пытаюсь скомпилировать, я получаю кучу ошибок в некоторых заголовках библиотеки.
Но если я удалю третью строку (ту, что с descSet
), код скомпилируется просто отлично.
В чем проблема? Невозможно повысить :: варианты объектов, отсортированных в порядке убывания ??
Edit:
Я использую Visual Studio 2005 и Boost 1.38.0 и следующую командную строку:
cl /EHsc /I"C:\boost_1_38_0" test.cpp
Edit2
Как было предложено Дагом Т., если я определю это:
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