本来准备写个例子的,在goldbot上选gcc 4.8.5,不支持 std::index_sequence,算了,我也用的不熟,同时不知道call里是不是增加了异步什么高级的东西。
搜了下 function wrapper,网上有个简单的写法,看能用上不。
#include <utility>
#include <iostream>
int foo(int a, int b) { return a + b; }
int bar(char a, char b, char c) { return a + b * c; }
template<typename Fn, Fn fn, typename... Args>
typename std::result_of<Fn(Args...)>::type
wrapper(Args... args) {
std::cout << "and ....it's a wrap ";
return fn(std::forward<Args>(args)...);
}
#define WRAPIT(FUNC) wrapper<decltype(&FUNC), &FUNC>
int main() {
std:: cout << WRAPIT(foo)(1,1) << std::endl;
std:: cout << WRAPIT(bar)('a','b', 1) << std::endl;
return 0;
}
【 在 hgoldfish 的大作中提到: 】
: 有什么绕过的办法吗?比如以下函数在 g++ 4.8 里面编译出错:
: template<typename T, typename Func, typename... ARGS>
: T ThreadPool::apply_dispatch(Func func, ARGS... args, detail::NormalType)
: ...................
--
FROM 124.114.151.*