Вариант может иметь несколько дубликатов одного типа. Например. std::variant<int, int>
.
Данный экземпляр std::variant
сравнивается равным с другим, если и только если они содержат одну и ту же альтернативную альтернативу, а значения указанных альтернатив сравниваются равными.
Таким образом, std::variant<int, int>
с index()
0 сравнивается не равным std::variant<int, int>
с index()
1, несмотря на то, что активные альтернативные варианты имеют тот же тип и то же значение.
Из-за этого стандартное «сравнение с T
» не было реализовано стандартом. Однако вы можете самостоятельно спроектировать перегрузку операторов сравнения, используя другие вспомогательные утилиты в заголовке <variant>
(например, std::holds_alternative
и std::get<T>
).