/Zc:hiddenFriend
(標準の C++ 非表示フレンド規則の適用)
非表示のフレンド関数または関数テンプレートの C++ 標準処理にコンパイラが準拠することを指定します。
構文
$
解説
/Zc:hiddenFriend
オプションを指定すると、/permissive-
オプションの動作のサブセットが有効になります。 非表示フレンドの標準に準拠するように、コンパイラに指示が送られます。 コンパイラは、囲むクラスの型の明示的なインスタンスまたはテンプレート パラメーターに対する引数依存の参照 (ADL) にのみ、非表示フレンドを含めます。 この制限により、非表示フレンドを使用して、型の操作を暗黙的な変換に適用できないようにすることができます。 このオプションを使用すると、他の方法では /permissive-
を使用できないコードのビルド速度を向上させることができます。
非表示フレンドは、クラスまたはクラス テンプレート定義内でのみ宣言された friend
関数または関数テンプレートです。 既定では、Microsoft C++ コンパイラは妥当な場合常に、オーバーロードの解決の候補として非表示フレンドの宣言を削除することはしません。 この従来の動作では、非表示フレンド関数がより多くのコンテキストで候補として含められることにより、コンパイラが低速化する可能性があります。
/permissive-
が指定されている場合には、標準 C++ の非表示フレンド動作が既定で有効になります。 /permissive-
オプションが指定されている場合に従来の非表示フレンド動作を指定するには、/Zc:hiddenFriend-
を使用します。 C++20 モジュールを使用する場合には、標準の非表示フレンド動作が必須となります。
/Zc:hiddenFriend
オプションは、Visual Studio 2019 バージョン 16.4 以降で使用できます。
/Zc:hiddenFriend
を指定した場合のコンパイラの動作の例については、「非表示のフレンド名の参照規則」を参照してください。
Visual Studio 開発環境でこのコンパイラ オプションを設定するには
プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。
[構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。
[追加オプション] プロパティを変更して
/Zc:hiddenFriend
または/Zc:hiddenFriend-
を含め、[OK] を選択します。