std::mem_fun_ref
来自cppreference.com
| 在标头 <functional> 定义
|
||
| |
(1) | (C++11 弃用) (C++17 移除) |
| |
(1) | (C++11 弃用) (C++17 移除) |
| |
(2) | (C++11 弃用) (C++17 移除) |
| |
(2) | (C++11 弃用) (C++17 移除) |
创建成员函数包装器对象,从模板实参推导类型。包装器对象期待到 T 类型的引用作为其 operator() 的首个参数。
1) 相当于调用
std::mem_fun_ref_t<S,T>(f) 或 std::const_mem_fun_ref_t<S,T>(f)。2) 相当于调用
std::mem_fun1_ref_t<S,T>(f) 或 std::const_mem_fun1_ref_t<S,T>(f)。此函数与相关类型于 C++11 弃用并于 C++17 移除,为了让位给更通用的 std::mem_fn 与 std::bind,它们都从成员函数创建可调用的兼容适配器的函数对象。
参数
| f | - | 指向要创建包装器的成员函数的指针 |
返回值
包装 f 的函数对象。
异常
可能会抛出由实现定义的异常。
注解
std::mem_fun 与 std::mem_fun_ref 的区别是前者产生的函数包装器期待对象指针,而后者期待引用。
示例
用 std::mem_fun_ref 绑定 std::string 的成员函数 std::basic_string::size。
Run this code
#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
int main()
{
std::vector<std::string> v = {"once", "upon", "a", "time"};
std::transform(v.begin(), v.end(),
std::ostream_iterator<std::size_t>(std::cout, " "),
std::mem_fun_ref(&std::string::size));
}
输出:
4 4 1 4
参阅
(C++11 弃用)(C++17 移除) |
从成员函数指针创建包装器,可以一个对象指针调用 (函数模板) |