hubert.reinterpretcast added a comment. At least on the surface, it looks like there will be a lot of trouble to deal with default arguments:
struct A { A(); ~A(); int x[3]; }; int (&f(const A & = A()))[3]; void bar(int); void foo() { for (auto e : f()) { bar(e); } } We get a `CXXDefaultArgExpr`, and the expression on the parameter declaration is what has the `MaterializeTemporaryExpr`. It looks like we now have cases where different call sites require different semantics (and perhaps different diagnostics, somewhat like template instantiations). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D139586/new/ https://reviews.llvm.org/D139586 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits