erik.pilkington added inline comments.
================ Comment at: clang/lib/AST/ExprConstant.cpp:4312 + } else if (MD && isLambdaCallOperator(MD) + && !Info.checkingPotentialConstantExpression()) { // We're in a lambda; determine the lambda capture field maps. ---------------- faisalv wrote: > How about we add a comment here along the lines of: Do not attempt to create > the variable-reference to closure data member map while 'constexpr' checking > a lambda's function call operator (standard reference). Currently constpexpr > checking is done right after the end of the function definition for the > syntehsized call operator marked explicitly constexpr - which occurs prior to > adding the captures map to the closure object. Alternatively we could have > conditioned the check at the end of the function body to bypass lambda call > operators and then invoke the constexpr check once the lambda is completely > processed. > > Between you and me, I'm a little torn about this approach - if you can make > an argument to consider your approach over this one - i think i could be > swayed (if i'm not already ;) - unless of course richard weighs in as a tie > breaker. Sure, added a version of that comment in the patch. I could go either way here too, but I like your approach because a) it makes the constant evaluator do just the work that is necessary when checkingPotentialConstantExpression(), and b) special-casing here is simpler and more precise than doing it in Sema. https://reviews.llvm.org/D45194 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits