我使用一個名爲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