elsteveogrande added inline comments.
================
Comment at: lib/Serialization/ASTReaderDecl.cpp:3448-3456
if (!inheritDefaultTemplateArgument(Context, FTTP, ToParam))
break;
} else if (auto *FNTTP = dyn_cast<NonTypeTemplateParmDecl>(FromParam)) {
if (!inheritDefaultTemplateArgument(Context, FNTTP, ToParam))
break;
} else {
if (!inheritDefaultTemplateArgument(
----------------
rsmith wrote:
> The idea is to reconstruct the 'inherited default template argument'
> information when we read a template declaration and find it's a redeclaration
> of another one, rather than serializing it and deserializing it. (In
> particular, if an imported template redeclares a non-imported template or a
> template imported from an unrelated module, it won't know that the prior
> declaration had a default argument because it doesn't know what the prior
> declaration was.)
>
> The problem with our implementation of that idea is these `break`s: we're
> (incorrectly) assuming that a template parameter cannot have a default
> argument if there's a later template parameter that does not have one.
>
> I removed the `break`s in r338438, and it fixed your testcase (which I
> committed alongside that change). Can you check to see if that also fixes the
> original problem from which this was reduced? Thanks!
Thanks @rsmith! It sounds like that ought to do it. We'll try again on our
end and let you know. Thanks for the quick fix!
Repository:
rC Clang
https://reviews.llvm.org/D38320
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits