问题标签 [stdbind]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
974 浏览

c++ - std::bind(x, y) 到底是做什么的?

我一直在阅读std::bindN3225 小节中的描述20.8.10.1。它说应该打印以下内容1,但我认为bind应该复制它的论点,因此它应该打印0。如果要引用传递的参数,则需要使用std::ref,对吗?

GCC 输出0,同意我认为可行的方法。但是 N3225 说这std::bind(f, a1)将返回一个调用包装器,当被调用时wrapper()将调用INVOKE(f, v1), wherev1应该是a(我传入的参数,换句话说,使用binds的传入参数是一个完美的转发参数,std::forward<A1>(a1))。

INVOKE(f, a)由 20.8.2 定义为f(a)。因此,这定义了对返回的调用包装器的调用传递了原始参数。我错过了什么?

0 投票
4 回答
3816 浏览

c++ - 右值引用是否有reference_wrapper<>?

我想知道如何执行以下操作

如何传递右值引用并将其作为右值引用(可能已包装)存储在调用包装器中?我知道我可以手动编写一个std::reference_wrapper<>具有转换功能的类T&&,但我宁愿避免这种情况并使用标准技术。


我按照 AProgrammer 的建议实现了它:

现在我可以说

如果我们将左值传递给,它会将其作为引用输入参数的左值转发,因此在这种情况下make_adv,它可以用作 的替代品。std::ref

0 投票
4 回答
113028 浏览

c++ - std::function 和 std::bind: 它们是什么,应该在什么时候使用它们?

我知道函子是什么以及何时将它们与std算法一起使用,但我不明白 Stroustrup 在C++11 FAQ中对它们的看法。

任何人都可以解释什么std::bindstd::function是什么,什么时候应该使用它们,并为新手举一些例子?

0 投票
3 回答
1970 浏览

c++ - 绑定两个函数对象

建筑与clang++ -std=c++0x -stdlib=libc++ main.cpp

错误:

0 投票
1 回答
355 浏览

c++ - 为什么我不需要 std::move 到 std::bind'ed 函数?

假设我有一个函数,采用右值引用:

...我将它的一个参数绑定到一个占位符。

我尝试了这样的调用,结果与我的预期相反。

这是编译器错误吗?或者,工作调用是不安全的代码吗?或者为什么我不必将std::move这个指针指向绑定函数?

顺便说一句,gcc4.4 的编译错误是:

0 投票
1 回答
2397 浏览

c++ - C++:获取从 std::bind 产生的参数

首先,有一点背景知识:在我的工作中,我们绑定了稍后调用的回调,这使得尝试通过日志跟踪控制流变得非常困难。为了帮助实现这一点,我们使用“日志上下文”,让您可以在请求通过系统时对其进行跟踪。您可以使用静态函数复制当前上下文并使用静态函数log_context::get_current恢复它log_context::set_current。这导致每次我们将回调发布到工作队列时都会导致大量重复代码。

我想做一个函数,它是一个替换的函数std::bind,它将保存当前log_context并在调用时恢复它。但是,我在编写它时遇到了一些麻烦。

现在,该函数如下所示:

它有效,但问题是用法要求您无缘无故地传递函数类型(除了这就是我找出用途的方式TFuncArgs):

所以,不是一个简单的替代品。似乎应该在编译时知道这些信息,我只是不知道如何。它几乎就在那里如何消除传递函数类型的需要?


我最初的想法是将绑定从将其转换为如下函数:

问题是 cast ( operator std::function<TReturn (TFuncArgs...)>() const) 永远不会被调用 (given int foo(int x, int y, int z)):

原因是functions 构造函数试图从中获取operator ()context_binder即使它没有)。

所以我对这个几乎解决方案的问题是:有什么方法可以让g++我更喜欢我的弃用运算符而不是尝试使用function's 构造函数?

0 投票
1 回答
92 浏览

c++ - 绑定并传递模板化函数调用

这不起作用:http: //ideone.com/mUL5Y

认为我在扣除该类型方面有所帮助:http: //ideone.com/mGfUj

也不行!我不明白为什么不。

我该怎么做?

0 投票
4 回答
7933 浏览

c++ - mem_fn & bind 的一些实际用途

有人可以推荐 tr1 的 mem_fn 和绑定实用程序的一些很酷的实际用途吗?我不需要深奥的 C++ 来开发库。只是一些使用这些的应用程序级编码。

任何帮助将不胜感激。

0 投票
1 回答
2310 浏览

c++ - 从 boost::bind 移动到 std::bind:编译错误

我有这个代码构建和运行完美:

当我在上面的代码中愉快地更改booststd,我开始收到此错误(我的编译器是 Visual Studio 2010 SP1):

这是怎么回事?也许我应该删除对 Boost 标头的引用?

0 投票
4 回答
21834 浏览

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

两者有什么区别吗?或者我是否可以安全地替换代码中出现的每一个boost::bindbystd::bind从而消除对 Boost 的依赖?