/Zc:templateScope (テンプレート パラメーターのシャドウを確認する)

/Zc:templateScopeコンパイラ オプションを使用すると、テンプレート パラメーターのシャドウに関する標準 C++ 動作のチェックが可能になります。

構文

/Zc:templateScope[-]

解説

C++ 標準では、テンプレートのスコープ内で別の宣言に対してテンプレート パラメーターの名前 (または シャドウ) を再利用することはできません。 コンパイラ オプションを/Zc:templateScope使用すると、このようなシャドウのエラーチェックが有効になります。

この /Zc:templateScope オプションは、Visual Studio 2022 バージョン 17.5 プレビュー 1 の新機能です。 このオプションは、オプションを使用して/permissive-コードがコンパイルされている場合でも 、既定ではオフになっています (または、または、そのオプションを/std:c++latest/std:c++20意味/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-. [OK] または [適用] を選択して、変更内容を保存します。

関連項目

/Zc (準拠)
/permissive-
/std (言語の標準バージョンの指定)