Error del compilador C3854
la expresión a la izquierda de "=" se evalúa como una función. No se puede asignar a una función (una función no es un valor L)
No se puede reinicializar una referencia. Desreferenciar una referencia a una función produce una función, que es un valor rvalue, al que no se puede asignar. Por lo tanto, no se puede asignar a través de una referencia a una función.
El ejemplo siguiente genera el error 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
}