std::function 可以存储指向数据成员的指针吗?

Can a std::function store pointers to data members?

cppreference,我发现:

Class template std::function is a general-purpose polymorphic function wrapper. Instances of std::function can store, copy, and invoke any Callable target -- functions, lambda expressions, bind expressions, or other function objects, as well as pointers to member functions and pointers to data members.

我不明白为什么 std::function 应该能够存储这样的指针,而且我以前从未听说过该功能。
真的有可能吗,我漏掉了什么,或者那是文档中的错误?

在这种情况下 operator() 应该如何表现?
documentation:

Invokes the stored callable function target with the parameters args.

无论如何,这里没有可调用的存储可调用函数目标。我错了吗?

老实说,我什至不知道这样一个函数的正确语法是什么,否则我会写一个例子来测试它。
如何使用以下模板来定义指向数据成员的指针?

template< class R, class... Args >
class function<R(Args...)>

调用std::function<R(ArgTypes...)>的函数调用运算符的效果:

R operator()(ArgTypes... args) const

等同于 (§ 20.9.11.2.4 [func.wrap.func.inv]/p1):

INVOKE<R>(f, std::forward<ArgTypes>(args)...)

其定义包括以下项目符号 (§ 20.9.2 [func.require]/p1):

Define INVOKE(f, t1, t2, ..., tN) as follows:

[...]

1.3t1.*f when N == 1 and f is a pointer to member data of a class T and t1 is an object of type T or a reference to an object of type T or a reference to an object of a type derived from T;

然后,当 f 是指向存储在 std::function 的内部调用程序中的数据成员的指针时,std::function 本身应该定义一个参数,例如:

std::function<int(std::pair<int,int>)> f = &std::pair<int,int>::first;

f(std::make_pair(1, 2));

DEMO