/Zc:referenceBinding(참조 바인딩 규칙 적용)
/Zc:referenceBinding 옵션을 지정하면 컴파일러는 const가 아닌 lvalue 참조가 임시에 바인딩되는 것을 허용하지 않습니다.
구문
/Zc:referenceBinding[-]
설명
/Zc:referenceBinding이 지정된 경우 컴파일러는 C++11 표준의 섹션 8.5.3을 따릅니다. 사용자 정의 형식을 임시로 비 const lvalue 참조에 바인딩하는 식은 허용되지 않습니다. 기본적으로 /Zc:referenceBinding-이 지정된 경우 컴파일러는 Microsoft 확장과 같은 식을 허용하지만 수준 4 경고가 발생합니다. 코드 보안, 이식성 및 규칙의 경우 /Zc:referenceBinding을 사용하는 것이 좋습니다.
/Zc:referenceBinding 옵션은 기본적으로 해제되어 있습니다. /permissive- 컴파일러 옵션은 이 옵션을 암시적으로 설정하지만 /Zc:referenceBinding-을 사용하여 재정의할 수 있습니다.
예시
이 샘플에서는 사용자 정의 형식의 임시를 비 const lvalue 참조에 바인딩할 수 있도록 하는 Microsoft 확장을 보여 줍니다.
// zcreferencebinding.cpp
struct S {
};
void f(S&) {
}
S g() {
return S{};
}
int main() {
S& s = g(); // warning C4239 at /W4
const S& cs = g(); // okay, bound to const ref
f(g()); // Extension: error C2664 only if /Zc:referenceBinding
}
Visual C++의 규칙과 관련된 문제에 대한 자세한 내용은 Nonstandard Behavior을 참조하세요.
Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.
구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.
/Zc:referenceBinding을 포함하도록 추가 옵션 속성을 수정한 다음 확인을 선택합니다.