Что произойдет, если вы сделаете функцию-член класса своим другом!?
Приведенный ниже код компилируется и запускается.Без объявления друга генерируется «слишком много аргументов для оператора» (и это правильно).Я понимаю, что делать это не имеет никакого смысла, но кто-нибудь может сказать мне, что здесь происходит?Друг заставляет компилятор каким-то образом пропустить этот параметр по умолчанию?
class Test
{
public:
friend bool operator<(Test& lhs, Test& rhs)
{
return true;
}
};
int main( int c, char** argv)
{
Test test1;
Test test2;
return test1 < test2;
}