Ошибка компилятора C3854
выражение слева от '=' вычисляется функцией. Не удается назначить функцию (функция не является l-value)
Не удается повторно инициализировать ссылку. Разыменовывание ссылки на функцию дает функцию, которая является 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
}