ホームページ >バックエンド開発 >C++ >Lambda 関数を「constexpr」式で使用できますか?

Lambda 関数を「constexpr」式で使用できますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-01 01:15:28521ブラウズ

Can Lambda Functions Be Used in `constexpr` Expressions?

Lambda 関数の Constexpr サポート

元の質問:

ラムダ関数は constexpr を利用できますかキーワード?

応答:

C 14 では、ラムダ関数は constexpr でサポートされていません。しかし、これは N4487 の採用により変わることになります。この提案では、定数式でのラムダと特定のクロージャ型の操作が許可されます。

説明:

C 14 標準の [expr.const]/(2.6) では、ラムダは定数式から除外されます。この制限については、N4487:

で概説されています。「この提案は、定数式で **ラムダ式** を許可し、既存の制限を削除することを提案しています。著者は、特定の **ラムダ式** と演算を定数式で許可することを提案しています。特定のクロージャ オブジェクトは定数式内に出現することが許可されます。

さらに、提案では次のように述べられています。

  • データ メンバーがすべてリテラル型である場合、クロージャ型はリテラル型とみなされます。
  • constexpr 指定子がラムダ宣言子から省略された場合、生成される関数呼び出し演算子は、constexpr 関数の要件を満たす限り constexpr になります。この動作は、暗黙的に定義されたコンストラクターおよび代入演算子の constexpr 推論に似ています。

以上がLambda 関数を「constexpr」式で使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。