如果想将类的非静态成员函数用std::function进行指示,需要将隐藏的类进行标识,
否则,会出现类似如下错误:
error: conversion from ‘void (CA::*)()’ to non-scalar type ‘std::function
#include#include #include class CA{ public: CA() = default; void func() { printf("CA::funcn"); } }; int main() { // std::function function_ = &CA::func; // error std::function function_ = &CA::func; CA a; // function_(); // error function_(&a); return 0; }
对于std::function和std::bind的区别,可参考:
[C++]std::function与std::bind的区别_sidemap的博客-CSDN博客弱回调https://blog.csdn.net/sidemap/article/details/125148200



