/// template-argument-list ',' template-argument
bool
Parser::ParseTemplateArgumentList(TemplateArgList &TemplateArgs) {
+ // Template argument lists are constant-evaluation contexts.
+ EnterExpressionEvaluationContext EvalContext(Actions,Sema::ConstantEvaluated);
+
while (true) {
ParsedTemplateArgument Arg = ParseTemplateArgument();
if (Tok.is(tok::ellipsis)) {
}
}
+
+namespace rdar13806270 {
+ template <unsigned N> class X { };
+ const unsigned value = 32;
+ struct Y {
+ X<value + 1> x;
+ };
+ void foo() {}
+}