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