我发现自己创造了一堂课
template <typename T> struct invoker {
void operator()(T& it) const {it();}
};
Run Code Online (Sandbox Code Playgroud)
所以我可以传递一个invoker<foo>到要调用的东西(这是不是我的控制之下),invoker<foo>::operator()(foo&)就可以反复用不同的foo情况下,得到它的呼叫转发到foo的foo::operator()()方法.
我知道它只有几行,但这似乎是STL的功能或boost::bind某种方式已经提供的那种东西.除非我看不到诀窍,如果有的话.(我确定我不是第一个使用非常类似的东西的人;它有名字吗?)
我已经tbb下载并放置在我的存储库目录中:
> tree deps/tbb/ -d \ndeps/tbb/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bin\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cmake\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 templates\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 include\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 serial\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tbb\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tbb\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 compat\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 internal\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 machine\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ia32\n \xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 gcc4.8\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 intel64\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 gcc4.8\nRun Code Online (Sandbox Code Playgroud)\n在我的CMakeLists.txt我已经尝试过这个:
include_directories("deps/tbb/include")\n\n\nfind_library(TBB_LIB\n NAMES\n tbbbind_debug\n tbbbind\n tbb_debug\n tbbmalloc_debug\n tbbmalloc_proxy_debug\n tbbmalloc_proxy\n tbbmalloc\n tbb_preview_debug\n tbb_preview\n tbb\n HINTS "${CMAKE_PREFIX_PATH}/deps/tbb/lib/intel64/gcc4.8"\n)\n\nadd_executable(${PROJECT_NAME}\nsrc/main.cpp\n)\n\ntarget_link_libraries(${PROJECT_NAME} PUBLIC ${TBB_LIB})\nRun Code Online (Sandbox Code Playgroud)\n但是使用cmake, 链接器构建会引发此错误:
\n\n/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld:找不到-lTBB_LIB-NOTFOUND
\ncollect2:错误:ld 返回 1 退出状态
\n
我无法弄清楚缺少什么。谢谢。
\n