stdbind相关内容

用 C++11 接口包装 C 回调的最佳方法是什么?

假设这是一个要包装的 C 函数: void foo(int(__stdcall *callback)()); C 函数指针回调的两个主要陷阱是: 无法存储绑定表达式 无法存储捕获的 lambdas 我想知道包装此类函数的最佳方法.第一个对于成员函数回调特别有用,第二个对于使用周围变量的内联定义特别有用,但这不是唯一的用途. 这些特定函数指针的另一个属性是它们需要使用 __s ..
发布时间:2022-01-03 08:47:50 C/C++开发

C++11 std::bind 和 boost::bind 的区别

这两者有什么区别吗?或者我是否可以安全地在我的代码中用 std::bind 替换每次出现的 boost::bind ,从而消除对 Boost 的依赖? 解决方案 boost::bind 有重载关系运算符,std::bind 没有. boost::bind 支持非默认调用约定,不保证std::bind(标准库实现可能会将此作为扩展提供). boost::bind 提供了一种直 ..
发布时间:2021-12-24 15:10:39 C/C++开发

为什么在C ++ 20中对lambda使用`std :: bind_front`?

如措辞类似的问题中所述(为什么在c语言中对lambda使用绑定++ 14?)答案是-没有理由(并且还提到了为什么最好使用lambdas)。 我的问题是-如果在C ++ 14中不再有使用绑定的理由,为什么标准委员会认为有必要添加 std :: bind_front 在C ++ 20中? 与lambda相比,它现在具有任何新的优势吗? 解决方案 bind_front 绑定前X个参数 ..
发布时间:2020-09-28 02:54:41 C/C++开发

执行绑定的std :: function会抛出std :: bad_function_call

我想将成员函数绑定到std::function.我听说成员函数带有一个额外的参数,它是实例指针.因此,我调用std::bind(&Class::Function, this, parameter),但是当我执行函数对象时,它将引发运行时错误. Application.exe中0x748D4B32处的未处理异常:Microsoft C ++ 例外:内存位置0x0114F ..
发布时间:2020-07-10 01:08:00 C/C++开发

为什么不建议使用bind()?

阅读有关删除该标准中一些不推荐使用,旧的和未使用的部分的C ++ 17提案( D.9“活页夹" [depr.lib.binders] 这定义了bind1st()/bind2nd(),它们已被bind()严格取代. (将来,我会争辩说,bind()本身已被lambda取代. 尤其是通用lambda,因此不建议使用bind(),但是 不是此提案的一部分.) 我没有得到关于bind()本身 ..
发布时间:2020-07-10 01:06:48 C/C++开发

如何使用绑定将成员函数作为函数指针传递?

我试图将成员函数作为函数指针传递,这样我就不必依赖单例或全局函数来处理Qt 5中的Qt消息.据我所知,std :: function是正确类型的对象,它具有正确的签名,并且绑定应该使我无法使用隐式this指针,实质上是将成员函数作为全局/非拥有函数传递出去. void ProgramMessageHandler::setAsMessageHandlerForProgram() { s ..
发布时间:2020-07-10 01:04:39 其他开发

std :: function和std :: bind:它们是什么,何时使用?

我知道什么是函子以及何时将其与std算法一起使用,但是我还不了解Stroustrup在谁能解释什么时候应该使用std::bind和std::function,并为新手提供一些示例? 解决方案 std::bind用于部分函数应用. 也就是说,假设您有一个带有3个参数的函数对象f: f(a,b,c); 您想要一个仅包含两个参数的新函数对象,定义为: g(a,b) := f ..
发布时间:2020-07-10 01:04:26 C/C++开发

std :: bind如何与成员函数一起使用

我正在使用std::bind,但是当我们将其与成员类函数一起使用时,仍然不知道它是如何工作的. 如果我们具有以下功能: double my_divide (double x, double y) {return x/y;} 我完全理解接下来的代码行: auto fn_half = std::bind (my_divide,_1,2); // ret ..
发布时间:2020-07-10 01:04:23 C/C++开发

使用std :: bind与重载函数

我找不到使用std::bind将参数绑定到重载函数的方法. std::bind不能以某种方式推断出重载类型(用于其模板参数).如果我不重载该功能,则一切正常.下面的代码: #include #include #include using namespace std; using namespace std::placehold ..
发布时间:2020-05-22 20:43:54 C/C++开发