lichray marked an inline comment as done.
lichray added a comment.

I reverted the attempt to fix `auto(&a)->n = 0;` in this revision. The fix is 
definitely not 3 lines and does not fit in this patch.
Long story short, our tentative parsing code does not look at trailing return 
types and fails to disambiguate `template <class T> void e(auto (*p)(T y) -> 
decltype(y())) {}` if it is still ambiguous after seen `auto (`. The following 
files have more interesting cases:
  CXX/dcl.dcl/dcl.spec/dcl.type/dcl.spec.auto/p2.cpp
  CXX/dcl/dcl.fct/p17.cpp
  CodeGenCXX/mangle-exprs.cpp
  Parser/cxx0x-ambig.cpp
  Parser/cxx1z-decomposition.cpp
  SemaCXX/trailing-return-0x.cpp
  SemaTemplate/alias-templates.cpp

and not all of them are correct. It needs a closer look in a future issue.



================
Comment at: 
clang/test/CXX/dcl.dcl/dcl.spec/dcl.type/dcl.type.auto.deduct/p2.cpp:4
+// p2.3 allows only T = auto in T(x).
+// As a Clang extension, we also allow T = decltype(auto) to match p2.2 (new 
T(x)).
+
----------------
rsmith wrote:
> We should produce an `ExtWarn` for this case.
Fixed. Now silenced in this file and produced somewhere else.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D113393/new/

https://reviews.llvm.org/D113393

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to