如何将具有参数的类成员函数作为右值绑定到 boost::function? [关闭]

Posted

技术标签:

【中文标题】如何将具有参数的类成员函数作为右值绑定到 boost::function? [关闭]【英文标题】:how can I bind a class member function with param as rvalue to boost::function? [closed] 【发布时间】:2018-08-03 08:53:53 【问题描述】:

我尝试将带有参数的类成员函数作为 rval 绑定到 boost::function。 但它不起作用。 我的示例错误代码:

class Class1

    int Foo1(int&& b)
    
        return b;
       

    void foo2()
    
        boost::function<int(int&&)> fc(boost::bind(&Class1::Foo1, this, _1) 
       
;

【问题讨论】:

如何它不起作用?请read about how to ask good questions,了解如何创建Minimal, Complete, and Verifiable Example,同时阅读this question checklist。 另请阅读所有idownvotedbecau.se 以了解您的问题可能被否决的一些原因。例如idownvotedbecau.se/beingunresponsive. 当问题陈述很简单时,很难提供解决方案,"it doesn't work"。请edit您的问题更完整地描述您预期会发生什么以及这与实际结果有何不同。请参阅 How to Ask 以获取有关什么是好的解释的提示。 【参考方案1】:

使用 lambda 表达式:

boost::function<int(int&&)> fc = [this](int&& x)

    return Foo1(x);
;

【讨论】:

以上是关于如何将具有参数的类成员函数作为右值绑定到 boost::function? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

右值引用成员变量有啥用

为啥在特殊成员函数中将 r 值绑定到 const 左值引用是非法的?

C11新特性右值引用&&

将 C 函数和参数作为右值引用传递

无法调用或分配具有右值引用作为参数的 std::function (Visual C++)

如何将一个类成员函数与param作为rvalue绑定到boost :: function? [关闭]