10
n4487および他のC++ 17の参照によると、新しいラムダ関数指定子-constexpr
が存在し、存在する場合はは "関数呼び出し演算子がconstexpr
関数であることを明示的に指定します。。私はラムダの絶え間ない表現に対する動機を理解しています。どのような私にとって興味深いのは、述べて提案のポイント4:constexpr
指定子がラムダ宣言子、関数呼び出し演算子(またはテンプレート)の中に省略されている場合デフォルトでConstexprラムダ?
4)それはの要件を満たすかどう
constexpr
ですconstexpr
機能です。
これは二つの質問に私をリード:
- はなぜ
constexpr
指定が必要なのでしょうか?ラムダコールオペレータがconstexpr
であるかどうかは、「constexpr
関数の要件を満たす」という事実にのみ依存しますが、constexpr
指定子の存在からではありません。 - デフォルトでラムダが
constexpr
であれば、他の種類の関数(グローバル関数など)ではなぜそれが提案されないのですか?コンパイラが、要件をカバーするすべての関数をconstexpr
として扱い始めると、どのような影響がありますか?