相关疑难解决方法(0)

lambda表达式的变量模板

使用g ++执行此操作的正确方法是什么:

template < typename F >
void g (F f);

template < typename ... A >
void h (A ... a);

template < typename ... A >
void f (A ... a) {
  g ([&a] () { h (a...); }); // g++-4.6: error: parameter packs not expanded with »...«
}
Run Code Online (Sandbox Code Playgroud)

c++ templates g++ c++11

10
推荐指数
1
解决办法
4155
查看次数

std::bind 具有多个参数的成员函数

我有这个代码

struct A {
    void f(int) {}
    void g(int, double) {}
};

int main() {
    using std::placeholders;
    A a;

    auto f1 = std::bind(&A::f, &a, _1);
    f1(5);                                   //  <--- works fine

    auto f2 = std::bind(&A::g, &a, _1);
    f2(5, 7.1);                              //  <--- error!
}
Run Code Online (Sandbox Code Playgroud)

我从编译器(gcc 4.8.1)收到此错误:

error: no match for call to '(std::_Bind<std::_Mem_fn<void (A::*)(int, double)>(A*, std::_Placeholder<1>)>) (int, double)'
 f2(1, 1.1);
           ^  
Run Code Online (Sandbox Code Playgroud)

你能告诉我错误在哪里吗?

谢谢,

马西莫

bind member stdbind

2
推荐指数
1
解决办法
1606
查看次数

标签 统计

bind ×1

c++ ×1

c++11 ×1

g++ ×1

member ×1

stdbind ×1

templates ×1