boost::variant
유형의 두 변수를 비교해야하며 동등성을 위해 variant 내부의 값을 비교하고 싶습니다.부스트 변형 비교기
이것을 구현하는 가장 좋은 방법은 무엇입니까?
내 변형은 다음과 같습니다
typedef boost::variant<int, float, double, long, bool, std::string, boost::posix_time::ptime> variant;
boost::variant
유형의 두 변수를 비교해야하며 동등성을 위해 variant 내부의 값을 비교하고 싶습니다.부스트 변형 비교기
이것을 구현하는 가장 좋은 방법은 무엇입니까?
내 변형은 다음과 같습니다
typedef boost::variant<int, float, double, long, bool, std::string, boost::posix_time::ptime> variant;
variant docs에서 :
EqualityComparable로 : 변형 자체가 EqualityComparable로하는 경우와 그 경계 유형의 모든 사람이 개념의 요구 사항을 충족하는 경우에만 가능합니다.
그래서 variant
은 모든 유형이 비교 가능한 경우 이미 동일성을 구현합니다. 그래서 귀하의 경우에는 ==
연산자를 사용할 수 있어야합니다.
일반적으로 인수 중 하나에 대한 참조를 묶고 방문자를 두 번째 인수에 적용하는 단일 방문자를 만들어 이진 방문자를 구현할 수 있습니다.
'=='잘 작동하고, 왜 다시 발명해야합니까? – Nim
이것은 실제 문제는 아니지만 부스트 1.45 및 VC100 "=="이 작동하지만 "! ="가 작동하지 않으면 컴파일러 오류가 발생합니다 ("연산자를 찾을 수 없습니다 ..."). –
정말이 변형이 필요한가요? – ybungalobill
예이 변형이 필요합니다 ... –