T(int t), и у него определен operator<(const T &t). Теперь благодаря преобразованию типов такое сработает T(1) < 3, но не работает 3 < T(1). Может кто нибудь встречал какие нибудь объяснения для второго случая, почему так сделали?
Так во втором случае operator >
T(1) < 3 это либо T::operator< либо operator<(T, U). Второго нет, первый есть, он рассматривается. Можно ли создать T из int? Да. T создается, функция вызывается 1 < T(3) не может быть методом, у int их нет. А operator<(T, U) отсутствует
Полагаю, нужно определить вне класса bool operator<(const int a, const T& b)
1 должно быть bool operator < (const T& ) const 2 надо определить вне класса bool operator < (int, const T& ) И нет проблем
Потому что такие правила поиска перегруж. Функций
Обсуждают сегодня