次のプログラムを検討してください。
#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);
ですか? 規格への参照をいただければ幸いです。