[clang] [Clang][NFCI] Cleanup the fix for default function argument substitution (PR #104911)
Younan Zhang via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 20 18:54:17 PDT 2024
================
@@ -285,7 +286,8 @@ Response HandleFunction(Sema &SemaRef, const FunctionDecl *Function,
// If this function was instantiated from a specialized member that is
// a function template, we're done.
assert(Function->getPrimaryTemplate() && "No function template?");
- if (Function->getPrimaryTemplate()->isMemberSpecialization())
+ if (!ForDefaultArgumentSubstitution &&
+ Function->getPrimaryTemplate()->isMemberSpecialization())
----------------
zyn0217 wrote:
Filed https://github.com/llvm/llvm-project/issues/105462 and let's focus on this PR again.
Despite that, I now realize using `(ForConstraintInstantiation || !RelativeToPrimary)` is probably unfeasible. The noexcept specifier would expect an end after such template specialization because it doesn't *copy* the expression from the primary declaration, which makes it impossible to refer to primary template parameters.
How about proceeding with the new bool flag and refactoring the function to use enums in the next next (the refactoring never ends ;) PR? As that would entail a lot of changes from other files, we can make the review easier
https://github.com/llvm/llvm-project/pull/104911
More information about the cfe-commits
mailing list