forked from OSchip/llvm-project
[modules] Support merging a parsed default argument with an imported hidden one for non-type and template template parameters too.
llvm-svn: 237815
This commit is contained in:
parent
c7d48d1a16
commit
fd8b64eea0
|
@ -1358,6 +1358,8 @@ bool Sema::CheckTemplateParameterList(TemplateParameterList *NewParams,
|
|||
// Merge default arguments for non-type template parameters
|
||||
NonTypeTemplateParmDecl *OldNonTypeParm
|
||||
= OldParams? cast<NonTypeTemplateParmDecl>(*OldParam) : nullptr;
|
||||
if (OldNonTypeParm && !LookupResult::isVisible(*this, OldNonTypeParm))
|
||||
OldNonTypeParm = nullptr;
|
||||
if (NewNonTypeParm->isParameterPack()) {
|
||||
assert(!NewNonTypeParm->hasDefaultArgument() &&
|
||||
"Parameter packs can't have a default argument!");
|
||||
|
@ -1405,6 +1407,8 @@ bool Sema::CheckTemplateParameterList(TemplateParameterList *NewParams,
|
|||
// Merge default arguments for template template parameters
|
||||
TemplateTemplateParmDecl *OldTemplateParm
|
||||
= OldParams? cast<TemplateTemplateParmDecl>(*OldParam) : nullptr;
|
||||
if (OldTemplateParm && !LookupResult::isVisible(*this, OldTemplateParm))
|
||||
OldTemplateParm = nullptr;
|
||||
if (NewTemplateParm->isParameterPack()) {
|
||||
assert(!NewTemplateParm->hasDefaultArgument() &&
|
||||
"Parameter packs can't have a default argument!");
|
||||
|
|
|
@ -44,4 +44,5 @@ namespace G {
|
|||
typedef enum {} l;
|
||||
}
|
||||
|
||||
template<typename T = int> int H(int a = 1);
|
||||
template<typename T = int, int N = 3, template<typename> class K = F> int H(int a = 1);
|
||||
template<typename T = int, int N = 3, template<typename> class K = F> using I = decltype(H<T, N, K>());
|
||||
|
|
Loading…
Reference in New Issue