/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 개발 환경에서 이 컴파일러 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.

  3. /Zc:referenceBinding을 포함하도록 추가 옵션 속성을 수정한 다음 확인을 선택합니다.

참고 항목

MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문
/Zc(규칙)