? TPC_FriendFunctionTemplateDefinition
: TPC_FriendFunctionTemplate)
: (D.getCXXScopeSpec().isSet() &&
- DC && DC->isRecord())
+ DC && DC->isRecord() &&
+ DC->isDependentContext())
? TPC_ClassTemplateMember
: TPC_FunctionTemplate);
}
if (CheckTemplateParameterList(TemplateParams,
PrevClassTemplate? PrevClassTemplate->getTemplateParameters() : 0,
(SS.isSet() && SemanticContext &&
- SemanticContext->isRecord())
+ SemanticContext->isRecord() &&
+ SemanticContext->isDependentContext())
? TPC_ClassTemplateMember
: TPC_ClassTemplate))
Invalid = true;
}
};
-namespace PR8747 {
+namespace PR8748 {
// Testcase 1
struct A0 { template<typename U> struct B; };
- template<typename U = int> struct A0::B { }; // expected-error{{cannot add a default template argument to the definition of a member of a class template}}
+ template<typename U = int> struct A0::B { };
// Testcase 2
template<typename T> struct A1 { template<typename U> struct B; };