/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 で使用するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
[その他のオプション] で、追加
/Zc:templateScope
または/Zc:templateScope-
. [OK] または [適用] を選択して、変更内容を保存します。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示