问题标签 [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.
c++ - std::bind(x, y) 到底是做什么的?
我一直在阅读std::bind
N3225 小节中的描述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)
。因此,这定义了对返回的调用包装器的调用传递了原始参数。我错过了什么?
c++ - 右值引用是否有reference_wrapper<>?
我想知道如何执行以下操作
如何传递右值引用并将其作为右值引用(可能已包装)存储在调用包装器中?我知道我可以手动编写一个std::reference_wrapper<>
具有转换功能的类T&&
,但我宁愿避免这种情况并使用标准技术。
我按照 AProgrammer 的建议实现了它:
现在我可以说
如果我们将左值传递给,它会将其作为引用输入参数的左值转发,因此在这种情况下make_adv
,它可以用作 的替代品。std::ref
c++ - std::function 和 std::bind: 它们是什么,应该在什么时候使用它们?
我知道函子是什么以及何时将它们与std
算法一起使用,但我不明白 Stroustrup 在C++11 FAQ中对它们的看法。
任何人都可以解释什么std::bind
和std::function
是什么,什么时候应该使用它们,并为新手举一些例子?
c++ - 绑定两个函数对象
建筑与clang++ -std=c++0x -stdlib=libc++ main.cpp
错误:
c++ - 为什么我不需要 std::move 到 std::bind'ed 函数?
假设我有一个函数,采用右值引用:
...我将它的一个参数绑定到一个占位符。
我尝试了这样的调用,结果与我的预期相反。
这是编译器错误吗?或者,工作调用是不安全的代码吗?或者为什么我不必将std::move
这个指针指向绑定函数?
顺便说一句,gcc4.4 的编译错误是:
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)
):
原因是function
s 构造函数试图从中获取operator ()
(context_binder
即使它没有)。
所以我对这个几乎解决方案的问题是:有什么方法可以让g++
我更喜欢我的弃用运算符而不是尝试使用function
's 构造函数?
c++ - mem_fn & bind 的一些实际用途
有人可以推荐 tr1 的 mem_fn 和绑定实用程序的一些很酷的实际用途吗?我不需要深奥的 C++ 来开发库。只是一些使用这些的应用程序级编码。
任何帮助将不胜感激。
c++ - 从 boost::bind 移动到 std::bind:编译错误
我有这个代码构建和运行完美:
当我在上面的代码中愉快地更改boost
时std
,我开始收到此错误(我的编译器是 Visual Studio 2010 SP1):
这是怎么回事?也许我应该删除对 Boost 标头的引用?
c++ - C++11 std::bind 和 boost::bind 的区别
两者有什么区别吗?或者我是否可以安全地替换代码中出现的每一个boost::bind
bystd::bind
从而消除对 Boost 的依赖?