f
コンパイラがfunction の代わりに以下の functor を呼び出すことを決定するルールを誰か説明してもらえますかf
?
#include <iostream>
struct A {
void operator()() { std::cout << "functor" << std::endl; }
};
void f() { std::cout << "function" << std::endl; }
int main()
{
A f;
f(); // Output: functor
}
A::operator()()
オーバーロードでf()
はないので、これはオーバーロード解決の外で発生すると思います。