相关疑难解决方法(0)

我不能将lambda作为std :: function传递

让我们关注这个例子:

template<typename T>
class C{
    public:
    void func(std::vector<T>& vec, std::function<T( const std::string)>& f){
        //Do Something
    }
};
Run Code Online (Sandbox Code Playgroud)

而现在,我正在努力:

std::vector<int> vec;
auto lambda = [](const std::string& s) { return std::stoi(s); };
C<int> c;
c.func(vec, lambda);
Run Code Online (Sandbox Code Playgroud)

它会导致错误:

no matching function for call to ‘C<int>::func(std::vector<int, std::allocator<int> >&, main()::<lambda(const string&)>&)’
     ref.parse(vec, lambda);
Run Code Online (Sandbox Code Playgroud)

请解释一下什么不好,以及如何使用std :: bind实现它.

c++ lambda c++11

44
推荐指数
2
解决办法
3万
查看次数

标签 统计

c++ ×1

c++11 ×1

lambda ×1