我使用一个名为fmt的格式化库(http://fmtlib.net/latest/)。将initializer_list转换为variadic模板
其中一个可能的用途是:
fmt::format("Hello, {name}! The answer is {number}. Goodbye, {name}.", fmt::arg("name", "World"), fmt::arg("number", 42));
我想换一个函数调用这个,我会为拨打:
myFunction(myString, {"name", "World"}, {"number", 42});
为任何数量的参数。
到现在为止,我只成功地做了功能callabel与对的列表:
myFunction(myString, std::make_pair("name", "World"), std::make_pair("number", 42));
与功能:
std::string myFunction(const char* str, const Args&... rest) const
{
return fmt::format(mLocale.getPOILabel(label), fmt::arg(rest.first, rest.second)...);
}
,但我想不会有成对使用。
我该怎么办?
PS:fmt::arg
不能在函数之间传递。
人们可以限定具有一个模板构造函数的一类,即,'模板 ARG(常量字符*名,T &&值)'和'{“号码”,42}'将然后使用统一的初始化语法成功地结合到类,并构造它。然而,我想不出一种方法来定义一个函数,该函数使用'arg'的可变参数列表。看起来像一个参数包不喜欢支撑统一初始化语法... –
当你将它们传递给'fmt :: format'时,你的PS *不能为真。我期望它只能通过参考值得到它们 – Caleth