下面是指向接受两个整数并返回一个 int 的类方法的指针:
template <typename T>
using TFunction = int (T::*)(int, int);
我只能在这里传递非常量方法。如何更改此模板以使其同时接受常量和非常量方法?
这种情况对于条件来说非常简单:
template <typename T>
using TFunction = std::conditional_t<
std::is_const_v<T>,
int (T::*)(int, int) const,
int (T::*)(int, int)
>;
现在TFunction<Foo>
int (Foo::*)(int, int)
,TFunction<Foo const>
int (Foo::*)(int, int) const
。