Сегодня задали весёлый вопрос по C++ - как добиться, чтобы
(x==1 && x==2 && x==3 && x==4)
имело значение true?
Ответ
Навскидку - сразу два варианта: переопределить оператор == или оператор приведения. Оператор && сам по себе - вряд ли, только вкупе с каким-то из перечисленных...
Вот, примерно так - https://ideone.com/XM7O1s
struct Cast
{
int i;
operator int() { return i++; }
Cast(int i):i(i){}
};
struct Equl
{
bool operator==(int) const { return true; }
};
Можно, конечно, извратиться - типа сравнение с конкретно 1,2,3 и 4 дает true, но это уже сути дела не меняет...
Комментариев нет:
Отправить комментарий