@@ -1360,7 +1360,8 @@ class NonTypeTemplateParmDecl final
13601360
13611361 // / The default template argument, if any, and whether or not
13621362 // / it was inherited.
1363- using DefArgStorage = DefaultArgStorage<NonTypeTemplateParmDecl, Expr *>;
1363+ using DefArgStorage =
1364+ DefaultArgStorage<NonTypeTemplateParmDecl, TemplateArgumentLoc *>;
13641365 DefArgStorage DefaultArgument;
13651366
13661367 // FIXME: Collapse this into TemplateParamPosition; or, just move depth/index
@@ -1430,7 +1431,10 @@ class NonTypeTemplateParmDecl final
14301431 bool hasDefaultArgument () const { return DefaultArgument.isSet (); }
14311432
14321433 // / Retrieve the default argument, if any.
1433- Expr *getDefaultArgument () const { return DefaultArgument.get (); }
1434+ const TemplateArgumentLoc &getDefaultArgument () const {
1435+ static const TemplateArgumentLoc NoneLoc;
1436+ return DefaultArgument.isSet () ? *DefaultArgument.get () : NoneLoc;
1437+ }
14341438
14351439 // / Retrieve the location of the default argument, if any.
14361440 SourceLocation getDefaultArgumentLoc () const ;
@@ -1444,7 +1448,8 @@ class NonTypeTemplateParmDecl final
14441448 // / Set the default argument for this template parameter, and
14451449 // / whether that default argument was inherited from another
14461450 // / declaration.
1447- void setDefaultArgument (Expr *DefArg) { DefaultArgument.set (DefArg); }
1451+ void setDefaultArgument (const ASTContext &C,
1452+ const TemplateArgumentLoc &DefArg);
14481453 void setInheritedDefaultArgument (const ASTContext &C,
14491454 NonTypeTemplateParmDecl *Parm) {
14501455 DefaultArgument.setInherited (C, Parm);
0 commit comments