// Testcase from P0127R2 // { dg-do compile { target c++17 } } template struct B { decltype(n) f = n; }; B<5> b1; // OK: template parameter type is int B<'a'> b2; // OK: template parameter type is char B<2.5> b3; // { dg-error "" "" { target c++17_down } } template parameter type cannot be double template void f(B) { } int main() { f(B<42>()); f(B<'a'>()); }