我正在尝试传递一个函数,它是另一个函数的参数,它在它们上使用了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();
}
}
有谁知道这里发生了什么?