私はfmt(http://fmtlib.net/latest/)という書式設定ライブラリを使用します。initializer_listをvariadicテンプレートに変換する
可能な用途の一つは次のとおりです。
ためmyFunction(myString, {"name", "World"}, {"number", 42});
引数のいずれかの数:私は私のように呼びたい関数の中で、この呼び出しをラップしたい
fmt::format("Hello, {name}! The answer is {number}. Goodbye, {name}.", fmt::arg("name", "World"), fmt::arg("number", 42));
。
myFunction(myString, std::make_pair("name", "World"), std::make_pair("number", 42));
機能付:
は今まで、私は唯一のペアのリストで、機能callabelを行うことに成功した
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(const char * name、T &&値)'と '{" number "、42}'は、統一された初期化構文を使用して、クラスを作成し、それを構築します。しかし、私は 'arg'のバリデーショナルなリストを取る関数を定義する方法を考えることはできません。パラメータパックのように見えます。 –
あなたのPS *は 'fmt :: format'に渡すとtrue *になることはできません。私はそれがrvalueの参照だけでそれらを受け取ることを期待する – Caleth