다음을 통해 공유


컴파일러 오류 C2891

'parameter': 템플릿 매개 변수의 주소를 사용할 수 없습니다.

lvalue가 아니면 템플릿 매개 변수의 주소를 사용할 수 없습니다. 형식 매개 변수는 주소가 없으므로 lvalue가 아닙니다. lvalues가 아닌 템플릿 매개 변수 목록의 형식이 아닌 값에도 주소가 없습니다. 템플릿 매개 변수로 전달된 값은 템플릿 인수의 컴파일러 생성 복사본이므로 컴파일러 오류 C2891을 발생시키는 코드의 예입니다.

template <int i> int* f() { return &i; }

참조 형식과 같은 lvalue인 템플릿 매개 변수는 해당 주소를 사용할 수 있습니다.

template <int& r> int* f() { return &r; }

이 오류를 해결하려면 lvalue가 아니면 템플릿 매개 변수의 주소를 사용하지 마세요.