12得票3回答
如何使用C++11接口封装C回调函数?

假设这是一个需要被封装的C函数:void foo(int(__stdcall *callback)()); C函数指针回调的两个主要问题是: 无法存储绑定表达式 无法存储捕获的Lambda表达式 我想知道如何包装这些函数以实现这样的功能。第一个问题尤其适用于成员函数回调,第二个问题适用...

11得票2回答
使用std::bind与重载函数

我无法找到如何使用std::bind将参数绑定到重载函数。不知何故,std::bind无法推断出重载类型(用于其模板参数)。如果我不重载函数,则一切正常。以下是代码:#include <iostream> #include <functional> #include &...

11得票4回答
mem_fn和bind的一些实际用途

有人能推荐一些tr1的mem_fn和bind实用工具的酷炫应用吗?我不需要专业用于库开发的c++,只需要一些应用级别的编码来使用它们。 非常感谢任何帮助。

10得票3回答
使用std :: function和std :: bind存储回调和处理对象删除。

我希望实现一个使用C++11存储多态类成员函数回调的管理器。问题在于,我不确定如何处理成员所属对象被删除或应该被删除的情况,并且我希望使接口尽可能简单。 因此,我考虑了以下方案:同时存储指向对象的std::weak_ptr和指向成员函数的std::function。 以下方法似乎可行:cl...

9得票1回答
当使用std::bind时,为什么复制构造函数会被调用两次?

我正在尝试使用std::function和std::bind来理解参数是如何被复制的,以及是否可以节省一些复制操作。 我知道当使用std::bind时,除非指定了std::ref,否则参数将按值传递而不是引用。然而,当我运行以下代码段时,拷贝构造函数会被调用两次。有人能解释一下为什么吗? ...

9得票2回答
Understanding std::function and std::bind

我正在尝试使用std::function和std::bind,但是我发现了一些不直观的事情,我希望更好地理解它。 举个例子: void fun() { } void hun(std::string) { } int main() { function<void(int...

8得票1回答
使用绑定到一个lambda的rvalue引用的std::async

我试图使用std::bind将一个右值引用绑定到lambda函数上,但当我在std::async调用中使用时出现问题: (source) auto lambda = [] (std::string&& message) { std::cout << mes...

8得票1回答
封装右值引用lambda时,std::async和std::bind有什么区别?

受到这个评论的启发,关于将带有右值引用参数的lambda函数直接绑定到std::async,通过std::async将一个右值绑定到lambda函数可以如预期一样编译和执行:(在线示例) auto lambda = [] (std::string&& message) { ...

8得票3回答
C++11中的随机数和std::bind交互方式出人意料

我正在使用GCC 4.6.3,并尝试使用以下代码生成随机数: #include <random> #include <functional> int main() { std::mt19937 rng_engine; printf("With bi...

7得票1回答
std::bind和完美转发

以下代码无法编译: #include <functional> template<class ...Args> void invoke(Args&&... args) { } template<class ...Args> void b...