コンパイラ エラー C3854
' = ' の左側の式は、関数として評価されます。 関数に割り当てることはできません (関数は左辺値ではありません)
参照を再初期化することはできません。 関数への参照を逆参照すると、代入できない rvalue である関数が生成されます。 このため、関数への参照を使用して割り当てることはできません。
次の例では C3854 が生成されます。
// C3854.cpp
int afunc(int i)
{
return i;
}
typedef int (& rFunc_t)(int);
typedef int (* pFunc_t)(int);
int main()
{
rFunc_t rf = afunc; // OK binding a reference to function
pFunc_t pf = &afunc; // OK initializing a pointer to function
*pf = &afunc; // C3854
// try the following line instead
// pf = &afunc;
*rf = &afunc; // C3854
}