다음을 통해 공유


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