当前我有一个功能:
void translate(std::string key, std::string& result, ...)
{
char buffer[1024];
va_list args;
va_start(args, result);
vsnprintf (buffer, sizeof(buffer), (loadedTranslations.find(key) != loadedTranslations.end() ? loadedTranslations[key] : "unknown").c_str(), args);
va_end(args);
result = buffer;
}
我在AMX插件中获取了一些数据,需要将它们传递给此函数。有什么办法可以做到这一点?在JavaScript中,我可以执行类似translate(a, b, ...rest)
的操作,并且可以正常工作。有一些方法可以在C ++中实现相同的结果吗?问题在于数据不是一种类型:可以有整数,浮点数和字符串。因此,不可能使用std::forward
(如果我正确理解了它的用例)。
答案 0 :(得分:1)
尝试:
template <typename ... Args>
void translate(std::string key, std::string& result, Args&& ... args)
{
// your code
}
以及您需要转发的任何地方,例如。功能foo
:foo(std::forward<Args>(args)...)
我建议您阅读有关variadic template和完美转发的更多信息。