컴파일러 오류 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
}