Date: Wed, 10 Jul 2024 21:38:30 +0400
>> template<void(*)(int)>>> struct A { // impl };>You can't. A function pointer points to a >function. You can't have a>pointer to a function template. So, at the >point when A is instantiated,>the function pointer must be either null or >point to a function, whether>it was generated as a result of a function >template instantiation or was>never a template to begin with.Yet a function pointer is compile time constant, that means we can examine its properties at compile time. And the template arguments are among these properties.This is related to type erasure.I think the compiler should allow a way to access the template arguments of a function pointer.Because when we pass a function pointer generated from a function template usually we doA<foo<T1,T2>> a;Which is mandatory to avoid overload ambiguity. And at this point, we see clearly the template arguments, and i don't see why the compiler can't see them!Sent from my Galaxy
Received on 2024-07-10 17:38:41