19得票1回答
将boost::function转换为std::function

我正在更新我们的一些旧代码,使用C++11特性来替换boost的等效物。但不是所有东西都像无序容器和智能指针一样简单地替换命名空间。 例如,boost::function有empty()和clear()方法,但std::function没有。 std::function定义了一个opera...

18得票2回答
std::bind让我完全无法理解

以下内容:#include <functional> struct Foo { void bar1() {} void bar2(int) {} void bar3(int, int) {} void bar4(int, int, int) {}...

18得票1回答
当使用std::function时,调用运算符会选择自动返回类型而不是构造函数。

以下代码片段: #include <functional> struct X { X(std::function<double(double)> fn); // (1) X(double, double); // ...

18得票4回答
C++如何使用std::bind / std::function引用模板函数

如果您有一个模板类或一个模板函数(或两者的组合),如何绑定该函数(保留模板类型参数)? 在下面的帖子中,我得到了一些关于基本语法的帮助,以绑定具有显式模板类型参数的函数,但在此过程中失去了提供模板类型参数的能力。 是否可能使其仍然可以在将来的调用中提供模板类型参数并使其工作? 这段代码进...

18得票4回答
为什么std::function不参与重载决议?

我知道以下代码无法编译。void baz(int i) { } void baz() { } class Bar { std::function<void()> bazFn; public: Bar(std::function<void()> fu...

16得票2回答
为什么当std :: function <X()>是类X的成员时,赋值操作无法编译?

以下代码无法编译:#include &lt;functional&gt; struct X { std::function&lt;X()&gt; _gen; }; int main() { X x; x._gen = [] { return X(); }; //th...

15得票1回答
C++11标准下的std::function和完美转发

为什么C++标准中std::function&lt;>::operator()的定义是这样的:R operator()(ArgTypes...) const; 而不是R operator()(ArgTypes&amp;&amp;...) const; 为了正确地传递参数,我们可能认为需要使用 ...

15得票3回答
为什么GCC的std::function不使用右值引用来传递通过值传递的参数之间在其内部委托之间传递?

首先,考虑以下代码: #include &lt;iostream&gt; #include &lt;functional&gt; struct Noisy { Noisy() { std::cout &lt;&lt; "Noisy()" &lt;&lt; std::endl; } ...

14得票7回答
为什么std::function实例有默认构造函数?

这可能是一个哲学问题,但我遇到了以下问题: 如果您定义了一个std::function,并且没有正确初始化它,您的应用程序将会崩溃,就像这样:typedef std::function&lt;void(void)&gt; MyFunctionType; MyFunctionType myFu...

14得票3回答
将 std::function<void(Derived*)> 转换为 std::function<void(Base*)>

首先,我定义了两个类,它们是互相继承的。class A { }; class B : public A { }; 然后,我声明一个使用std::function&lt;void(A*)&gt;的函数: void useCallback(std::function&lt;void(A*)&gt...