📖
C++Builderで可変長引数を試す
C++Builderは関係しませんが、可変長引数の作り方を試してみました。
テンプレートやLambda式を使っているため、例のごとくClassicコンパイラでは動作しません。
引数に与えた全文字列を結合する
// プロトタイプ宣言
template <class... A>
UnicodeString __fastcall UniStrCat(A...);
// 引数の文字列を結合する関数
Memo1->Clear();
auto GetString = [](auto... args){
UnicodeString result = "";
for(UnicodeString arg : std::initiallizer_list<UnicodeString>{args...}){
result += args;
}
return result;
};
Memo1->Lines->Add(GetString("123", "456")); // "123456"
Memo1->Lines->Add(GetString("123", "456", "789")); // "123456789"
Memo1->Lines->Add(GetString("123", "456", "789", "012")); // "123456789012"
参考文献
Discussion