std :: function with C variadic arguments,not templated variable arguments

时间:2015-02-25 11:15:50

标签: c++ c++11 variadic-functions std-function

我基本上想要做以下事情:

typedef
std::function<int(const char* format, ...)> PrintfLikeFunction;

然而,这似乎不起作用。

这可能吗?在我的情况下,我真的需要将函数与可变参数匹配,以便我可以传入printf

另一个原因是,我想要

void doSomething(PrintfLikeFunction logger);

并且实现应该是分开的,因此这不能是模板函数。

1 个答案:

答案 0 :(得分:2)

std::function无法做到这一点。

It's pretty much impossible to forward C-style variadic arguments directly,不知道实际传递了什么参数。

根据具体情况,您可能只需要一个函数指针 - int(*)(const char*, ...),或者,如果需要类型擦除,请重新编写代码以使用变体va_list