typedef boost::variant<long long,double,string> possibleTypes ;
set<possibleTypes,less<possibleTypes> > ascSet ;
set<possibleTypes,greater<possibleTypes> > descSet ;
컴파일하려고하면 일부 라이브러리 헤더에 오류가 발생합니다.
그러나 세 번째 줄 (descSet
이있는 줄)을 제거하면 코드가 올바르게 컴파일됩니다.std :: boost :: variant 요소로 채워지는 설정은 하위 클래스로 정렬 될 수 없습니까?
무엇이 문제입니까? boost :: variant 개체를 하위 순서로 정렬 할 수 있습니까 ??
편집 :
내가 비주얼 스튜디오 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