【发布时间】:2021-03-30 10:27:27
【问题描述】:
我正在尝试编写一个 C++ 函数模板f,其中一个模板参数类型为void (Foo::*FUNC)(T const *),其中Foo 是某种类类型。此外,我想从为FUNC 指定的具体成员函数指针中推导出T。所以一个想法是:
template<typename T, void(Foo::*FUNC)(T const *)>
void f()
{ /* use T in here, e.g. if constexpr (std::is_same_v<T, int>) */ }
但是我必须在实例化 f 时明确指定 T 并且不能只写例如f<&Foo::bar>。我知道有一些方法可以推断出函数的第一个参数的类型,但它们都过于复杂(不使用 Boost)。有没有更聪明的方法来做我想做的事?
【问题讨论】:
标签: c++ templates c++17 member-function-pointers