std::函数带有C变量参数,而不是模板变量参数

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

本文关键字:参数 变量 std 函数      更新时间:2023-10-16

我基本上想做以下事情:

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

然而,这似乎并不奏效。

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

另一个原因是,我想要

void doSomething(PrintfLikeFunction logger);

并且实现应该是独立的,因此这一定不是一个模板函数。

这在std::function中是不可能的。

在不知道实际通过了什么论点的情况下,直接提出C风格的变体论点几乎是不可能的。

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