Как сравнить std :: вариант пользовательских классов? - PullRequest
0 голосов
/ 02 ноября 2018

1. Это мои занятия:

struct SymbolToken {
    std::string name;
};

struct QuoteToken {
};

struct ConstantToken {
    int value;
};

2. У меня есть следующий typedef:

typedef std::variant<SymbolToken, QuoteToken, ConstantToken> Token;

3. Я хочу написать утверждение:

assert(Token{ConstantToken{4}} == Token{ConstantToken{4}}) // fine
assert(Token{ConstantToken{3}} == Token{ConstantToken{4}}) // exception

Как я могу это реализовать?

1 Ответ

0 голосов
/ 02 ноября 2018

Реализация == на содержащиеся типы.

Для цитаты всегда возвращайте true.

Возможно также реализовать != в здравом уме.

...