/Zc:templateScope (템플릿 매개 변수 섀도 확인)

/Zc:templateScope 컴파일러 옵션을 사용하면 템플릿 매개 변수의 섀도링과 관련된 표준 C++ 동작에 대한 검사 사용할 수 있습니다.

구문

/Zc:templateScope[-]

설명

C++ 표준은 템플릿 범위 내의 다른 선언에 템플릿 매개 변수의 이름(또는 그림자)을 다시 사용할 수 없습니다. /Zc:templateScope 컴파일러 옵션을 사용하면 이러한 섀도에 대한 오류 검사 수 있습니다.

Visual /Zc:templateScope Studio 2022 버전 17.5 미리 보기 1의 새로운 옵션입니다. 이 옵션은 코드가 옵션(또는 같은 의미 또는 /permissive-/std:c++20/std:c++latest)을 사용하여 /permissive- 컴파일되는 경우에도 기본적으로 해제됩니다. 오류 검사 사용하려면 컴파일러 명령줄에 명시적으로 추가 /Zc:templateScope 해야 합니다. 검사 명시적으로 사용하지 않도록 설정하려면 이 /Zc:templateScope- 옵션을 사용합니다.

예시

아래에서 /Zc:templateScope이 샘플 코드는 오류를 생성합니다.

template<typename T>
void f(T&& t) {
    int T = 13;
}

/* Output:
t.cpp(3): error C7527: 'T': a template parameter name cannot be reused within its scope
*/

Visual Studio에서 이 컴파일러 옵션을 설정하려면

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

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

  3. 추가 옵션에서 추가 /Zc:templateScope 또는 /Zc:templateScope-. 확인을 선택하거나 적용하여 변경 내용을 저장합니다.

참고 항목

/Zc (규칙)
/permissive-
/std(언어 표준 버전 지정)