c++ - reference_wrapper 引用原语

标签 c++ c++11 function-pointers functor reference-wrapper

我的印象是我可以使用 reference_wrapper 生成一个仿函数,该仿函数将返回传递给 reference_wrapper 构造函数的对象。但这不起作用。我做错了吗?如果是这样,是否有更好的方法来实现这一目标?我可以编写一个 lambda,看起来我不应该这样做。

#include <iostream>
#include <functional>
using namespace std;

void funPtrPrinter( function< int( void ) > output )
{
    cout << output() << endl;
}

int main( void )
{
    int thirteen = 13;
    auto refWrap = ref( thirteen );
    funPtrPrinter( refWrap );
}

最佳答案

成员变量也有类似的特性。也许你把它和那个搞混了。

struct foo { int bar; };

如果您有一个带有公共(public)成员变量的类,您可以使用 std::mem_fnstd::bind 创建返回变量值的仿函数。

auto f = std::mem_fn(&foo::bar);
std::cout << f(foo{42}) << '\n';

auto g = std::bind(&foo::bar, foo{42});
std::cout << g() << '\n';

关于c++ - reference_wrapper 引用原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22256071/

相关文章:

C++ Boost 为两个不同的进程创建共享内存

c++ - 将遗留的 c 枚举包装到 c++11 枚举类

c++ - 使用 vector 资源句柄的递归成员初始化

c++ - 将 vector 的 vector 合并为单个 vector

c++ - 将函数分配给函数指针

c++ - OpenMP 矩阵乘法嵌套循环

c++ - C++11 std::string::operator[] 会返回空终止缓冲区吗

数组中struct中的c++成员函数指针给出编译错误

c++ - constexpr vector push_back 或如何 constexpr 所有的东西

使用 qsort() 使用函数指针按照用户想要的顺序进行排序的 C 代码