我基本上想要做以下事情:
typedef
std::function<int(const char* format, ...)> PrintfLikeFunction;
然而,这似乎不起作用。
这可能吗?在我的情况下,我真的需要将函数与可变参数匹配,以便我可以传入printf
。
另一个原因是,我想要
void doSomething(PrintfLikeFunction logger);
并且实现应该是分开的,因此这不能是模板函数。
答案 0 :(得分:2)
std::function
无法做到这一点。
It's pretty much impossible to forward C-style variadic arguments directly,不知道实际传递了什么参数。
根据具体情况,您可能只需要一个函数指针 - int(*)(const char*, ...)
,或者,如果需要类型擦除,请重新编写代码以使用变体va_list
。