File tree Expand file tree Collapse file tree 2 files changed +27
-3
lines changed
Expand file tree Collapse file tree 2 files changed +27
-3
lines changed Original file line number Diff line number Diff line change @@ -2189,11 +2189,14 @@ StmtProfiler::VisitCXXPseudoDestructorExpr(const CXXPseudoDestructorExpr *S) {
21892189
21902190void StmtProfiler::VisitOverloadExpr (const OverloadExpr *S) {
21912191 VisitExpr (S);
2192- if (S->getNumDecls () == 1 )
2192+ bool DescribingDependentVarTemplate =
2193+ S->getNumDecls () == 1 && isa<VarTemplateDecl>(*S->decls_begin ());
2194+ if (DescribingDependentVarTemplate) {
21932195 VisitDecl (*S->decls_begin ());
2194- else
2196+ } else {
21952197 VisitNestedNameSpecifier (S->getQualifier ());
2196- VisitName (S->getName (), /* TreatAsDecl*/ true );
2198+ VisitName (S->getName (), /* TreatAsDecl*/ true );
2199+ }
21972200 ID.AddBoolean (S->hasExplicitTemplateArgs ());
21982201 if (S->hasExplicitTemplateArgs ())
21992202 VisitTemplateArguments (S->getTemplateArgs (), S->getNumTemplateArgs ());
Original file line number Diff line number Diff line change @@ -52,3 +52,24 @@ namespace AssignmentOp {
5252 D2 &operator =(const D2&); // expected-error {{more lax}}
5353 };
5454}
55+
56+ namespace OverloadedFunctions {
57+
58+ template <typename T>
59+ void f (T&) noexcept ;
60+
61+ template <typename T, int N>
62+ void f (T (&arr)[N]) noexcept (noexcept (f(*arr)));
63+
64+ template <typename T>
65+ inline void f (T&) noexcept {}
66+
67+ template <typename T, int N>
68+ inline void f (T (&arr)[N]) noexcept (noexcept (f(*arr))) {}
69+
70+ void g () {
71+ int x[1 ];
72+ f (x);
73+ }
74+
75+ }
You can’t perform that action at this time.
0 commit comments