forked from OSchip/llvm-project
PR37680: fix faulty assertion condition.
When looking up a template name, we can find an overload set containing a function template and an unresolved non-type using declaration. llvm-svn: 334106
This commit is contained in:
parent
8cb6a521be
commit
ef53a3e2b6
|
@ -7292,6 +7292,7 @@ ASTContext::getOverloadedTemplateName(UnresolvedSetIterator Begin,
|
|||
for (UnresolvedSetIterator I = Begin; I != End; ++I) {
|
||||
NamedDecl *D = *I;
|
||||
assert(isa<FunctionTemplateDecl>(D) ||
|
||||
isa<UnresolvedUsingValueDecl>(D) ||
|
||||
(isa<UsingShadowDecl>(D) &&
|
||||
isa<FunctionTemplateDecl>(D->getUnderlyingDecl())));
|
||||
*Storage++ = D;
|
||||
|
|
|
@ -447,3 +447,15 @@ namespace DependentUnresolvedUsingTemplate {
|
|||
xb.h(); // expected-note {{instantiation of}}
|
||||
}
|
||||
}
|
||||
|
||||
namespace PR37680 {
|
||||
template <class a> struct b : a {
|
||||
using a::add;
|
||||
template<int> int add() { return this->template add(0); }
|
||||
};
|
||||
struct a {
|
||||
template<typename T = void> int add(...);
|
||||
void add(int);
|
||||
};
|
||||
int f(b<a> ba) { return ba.add<0>(); }
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue