[PATCH] [ms] Don't try to delay lookup for lookup or overload resolution failures in SFINAE context (PR23823)

Hans Wennborg hans at chromium.org
Fri Jun 12 14:27:45 PDT 2015


REPOSITORY
  rL LLVM

http://reviews.llvm.org/D10417

Files:
  cfe/trunk/lib/Sema/SemaOverload.cpp
  cfe/trunk/test/SemaTemplate/ms-lookup-template-base-classes.cpp

Index: cfe/trunk/test/SemaTemplate/ms-lookup-template-base-classes.cpp
===================================================================
--- cfe/trunk/test/SemaTemplate/ms-lookup-template-base-classes.cpp
+++ cfe/trunk/test/SemaTemplate/ms-lookup-template-base-classes.cpp
@@ -563,3 +563,13 @@
   x.member(); // expected-note{{requested here}}
 };
 }
+
+namespace PR23823 {
+// Don't delay lookup in SFINAE context.
+template <typename T> decltype(g(T())) check(); // expected-note{{candidate template ignored: substitution failure [with T = int]: use of undeclared identifier 'g'}}
+decltype(check<int>()) x; // expected-error{{no matching function for call to 'check'}}
+
+void h();
+template <typename T> decltype(h(T())) check2(); // expected-note{{candidate template ignored: substitution failure [with T = int]: no matching function for call to 'h'}}
+decltype(check2<int>()) y; // expected-error{{no matching function for call to 'check2'}}
+}
Index: cfe/trunk/lib/Sema/SemaOverload.cpp
===================================================================
--- cfe/trunk/lib/Sema/SemaOverload.cpp
+++ cfe/trunk/lib/Sema/SemaOverload.cpp
@@ -10750,7 +10750,8 @@
   // functions, including those from argument-dependent lookup.
   AddOverloadedCallCandidates(ULE, Args, *CandidateSet);
 
-  if (getLangOpts().MSVCCompat && CurContext->isDependentContext() &&
+  if (getLangOpts().MSVCCompat &&
+      CurContext->isDependentContext() && !isSFINAEContext() &&
       (isa<FunctionDecl>(CurContext) || isa<CXXRecordDecl>(CurContext))) {
 
     OverloadCandidateSet::iterator Best;

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D10417.27598.patch
Type: text/x-patch
Size: 1584 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150612/ba679e14/attachment.bin>


More information about the cfe-commits mailing list