================
@@ -108,8 +108,11 @@ struct Foo {
Foo(T const (&)[N]);
};
+// FIXME: Prefer non-canonical template arguments in the deduction guide?
template <typename X, int Y>
using Bar = Foo<X, sizeof(X)>; // expected-note {{candidate template ignored:
couldn't infer template argument 'X'}} \
+ // expected-note {{implicit deduction guide
declared as 'template <typename X> Bar(Foo<type-parameter-0-0,
sizeof(type-parameter-0-0)>) -> Foo<type-parameter-0-0,
sizeof(type-parameter-0-0)>'}} \
----------------
zyn0217 wrote:
I think it's because we attach the `__is_deducible` constraint to the
`TemplateParameterList` rather than the `FunctionDecl` corresponding to the
synthesized deduction guide. And we don't have a handling in `DeclPrinter` that
prints such trailing expressions for template parameters...
I could try adding such logic to `DeclPrinter` and see if it doesn't break
anything seriously. Otherwise, we probably need to tweak our
`BuildDeductionGuideForTypeAlias` so that we attach the constraints to the
function decl. (I assume there aren't many differences between the two, i.e.
attaching it to the function Decl or to the template parameter list?)
https://github.com/llvm/llvm-project/pull/96084
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits