Ответ 1
Я думаю, что это просто не добавлено в библиотеку. Boost.Operators не поможет, потому что любой вариант был бы получен из boost:: operator:: equal_comparable. Дэвид Пьер прав, чтобы сказать, что вы можете использовать это, но ваш ответ тоже верен, что новый оператор!= Не будет найден ADL, поэтому вам понадобится оператор-оператор.
Я бы спросил об этом в списке рассылки для ускорителей.
Изменить комментарий @AFoglia:
Семь месяцев спустя, и я изучаю Boost.Variant, и я натыкаюсь на это лучшее объяснение списков пропуска.
http://boost.org/Archives/boost/2006/06/105895.php
operator==
вызывает operator==
для текущего класса в данный момент. Аналогично, вызов operator!=
должен также вызвать operator!=
класса. (Потому что теоретически класс может быть определен таким образом, что a!=b
не совпадает с !(a==b)
.) Таким образом, это добавит еще одно требование, чтобы классы в варианте имели operator!=
. (Существует дискуссия о том, можете ли вы сделать это предположение в потоке списка рассылки.)