Lambda 関数は「constexpr」コンテキストで使用できますか?

DDD
リリース: 2024-10-31 00:30:29
オリジナル
977 人が閲覧しました

 Can Lambda Functions Be Used in `constexpr` Contexts?

Lambda 関数の constexpr サポート

lambda 関数の constexpr サポートは、C コミュニティで広く議論されているトピックです。 [expr.const]/(2.6) に従って定数式ではラムダは現在許可されていませんが、作業草案 N4582 に含まれている N4487 では、この制限を削除することが提案されています。

提案されたラムダ-関連する変更:

  • 定数式でラムダを許可します。
  • すべてのデータ メンバーがリテラル型である場合、クロージャ型をリテラル型とみなします。
  • ラムダ宣言子内で constexpr 指定子が省略されている場合、生成された関数呼び出し演算子は、constexpr 関数の要件を満たしていれば constexpr とみなされます。

例:

次の例は、N4487 が受け入れられると有効になります:

<code class="c++">struct Test
{
  static const int value = []() constexpr { return 0; } ();
};</code>
ログイン後にコピー

回避策:

constexpr サポートが正式に追加される前の回避策として、以下を使用できます。ラムダの代わりに関数テンプレート:

<code class="c++">struct Test
{
  template <typename>
  static const int value = 0;
};</code>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!