подталкивание :: вариант определяет оператор < следующим образом:Как изменить поведение наддува :: оператор вариант <
Если который() == rhs.which() затем: content_this < content_rhs, где content_this - это содержимое * this и content_rhs - это содержимое rhs. В противном случае: which() < rhs.which().
Это не то, что я хочу, потому что я хотел бы провалить сравнение <. Например, если у меня есть вариант, как это:
typedef boost::variant<int, double, std::string> DataType;
Я хочу DataType (1) < DataType (2,0), чтобы добиться успеха, но DataType (1) < DataType ("2"), чтобы бросить исключение. Есть ли способ достичь этого?
я не могу определить
bool operator < (const Field& lhs, const Field& rhs)
, потому что он будет конфликтовать с оператором члена <, определенной в варианте класса.
Я могу определить static_visitor, но я хотел бы знать, есть ли способ перегрузить оператора <.
Независимо от того, что вы используете, эти сравнения должны иметь необязательный настраиваемый компаратор. – chris
К сожалению 'вариант :: operator <' является функцией-членом. – sbabbi