我刚刚测试了以下代码,发现std::is_function
不接受成员函数类型。(我不确定其他编译器是否如此,我使用的是 MVC++ Nov 2012 CTP)
class Ac {
public:
float af(int) {}
};
int main() {
std::cout << std::is_function<decltype(Ac::af)>::value << '\n'; //output is 0
}
所以我正在尝试实现它:
template<typename T>
struct is_member_function : std::false_type {};
template<typename T, typename R, typename... Args>
struct is_member_function<R (T::) (Args...)> : std::true_type {}; //this doesn't compile
对于成员函数指针类型,我们可以专门针对这个签名:R (T::*)(Args...)
,但是成员函数类型对应的语法是什么?