Здравствуйте, rg45, Вы писали:
R>Здравствуйте, Marty, Вы писали:
M>>Кстати, а почему ты считаешь, что результат должен быть строго типа bool? Для || и && такого требования нет
R>Как это нет? И какой, по-твоему, тип результата, кроме bool, может быть, например, у выражения 42 && 43? int, что ли?
Это про встроенные в язык.
У пользовательских перегрузок может быть любой тип возврата.
struct A {
friend A operator&&(A const&, int a) {
return A();
}
};
int main() {
A a;
a = a && 5;
}
Основаная причина почему не перегружают, это потеря оптимизированного невычисления второй части выражения.
Более интересен вопрос, а что за случай такой, что нужно перегрузить &&, ||.