今天才知道数据成员指针也是 Callable 的,也就是说你可以写:

struct Foo {
  int x;
  int y;
};

int Foo::*ptr = &Foo::y;
Foo f{1, 2};
std::cout << std::invoke(ptr, f);


上述代码会输出 2,因此某种意义上来说数据成员指针可以看作是一个返回某个数据成员的值的函数(函数式入脑)
 
 
Back to Top