Рассмотрим следующую программу:разница между + Ь и оператор + (а, б)
#include<functional>
typedef std::function< int(int) > F;
F operator+(F, F)
{
return F();
}
int f(int x) { return x; }
int main()
{
operator+(f,f); // ok
f+f; // error: invalid operands to binary expression
}
Почему последняя строка f+f;
не компилировать? Почему это не идентично operator+(f,f);
? Будет оценена ссылка на стандарт.
Возможный дубликат http://stackoverflow.com/questions/13869150/rules-for-lookup-of-operators-in-c11? – Cubbi
@Cubbi Я не думаю, что это дубликат, это о * перегруженных * членах и операциях блокировки области. –
хорошо, что ответ поднял правила поиска (которые отличаются друг от друга для 'a + b' vs.' operator + (a, b) '), поэтому он ответил бы на заголовок вашего вопроса .. но да, в этом случае, в стандарте есть ярлык. – Cubbi