/Zc:templateScope
(テンプレート パラメーターのシャドウを確認する)
/Zc:templateScope
コンパイラ オプションを使用すると、テンプレート パラメーターのシャドウに関する標準 C++ の動作を確認できます。
構文
/Zc:templateScope
[-
]
解説
C++ 標準では、テンプレートのスコープ内の別の宣言に対してテンプレート パラメーターの名前 (または 表示) を再利用することはできません。 /Zc:templateScope
コンパイラ オプションを使用すると、このようなシャドウのエラー チェックが有効になります。
/Zc:templateScope
オプションは、Visual 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 で使用するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
[追加のオプション] で、
/Zc:templateScope
または/Zc:templateScope-
を追加します。 [OK] または [適用] を選択して、変更内容を保存します。