Errore del compilatore C3854
l'espressione a sinistra di '=' restituisce una funzione. Impossibile assegnare a una funzione (una funzione non è un l-value)
Non è possibile reinizializzare un riferimento. La dereferenziazione di un riferimento a una funzione restituisce una funzione, ovvero un rvalue, a cui non è possibile assegnare. Pertanto, non è possibile assegnare tramite un riferimento a una funzione.
L'esempio seguente genera l'errore 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
}