将函数和args传递给另一个函数

时间:2018-06-03 06:34:54

标签: c++ multithreading linkage

我正在尝试传递一个函数,它是另一个函数的参数,它在它们上使用了std :: bind。 但是我一直收到以下错误:

    debug/ObjectCache.o: In function `ObjectCache::ExportStructsToPython()':
../src/ObjectCache.cpp:457: undefined reference to `void thread_pool::launch<void (&)(StructViewGroup, InlineFunctionParser*, RvString), StructViewGroup&, InlineFunctionParser*, RvString const&>(void (&&&)(StructViewGroup, InlineFunctionParser*, RvString), StructViewGroup&&&, InlineFunctionParser*&&, RvString const&&&)'

所有这些&amp;&amp;&amp;。&amp;。

电话:

tp.launch(WriteExportStruct,it->second, &parser, filename);

和功能:

template <typename F, typename ... Args>
void thread_pool::launch(F&& function, Args&& ... args) {
    std::lock_guard<std::mutex> lg(_lock);
    _next_task = std::bind(std::forward<F>(function),std::forward<Args...>(args...));
    if (_num_idle) {
        --_num_idle;
        _sig.notify_one();
    } else if (_thread_count < _max_threads) {
        ++_thread_count;
        _thread_pool.emplace_back(&thread_pool::__work_life, this);
    } else {
        _next_task();
    }
}

有谁知道这里发生了什么?

0 个答案:

没有答案