#include <iostream>
using namespace std;
struct Params {
int p1;
string p2;
double p3;
};
string foo(const Params p) {
string result = "{";
if (p.p1 != 0) {
result += to_string(p.p1);
}
if (p.p2.length() > 0) {
if (result.length() > 0) {
result += ", ";
}
result += p.p2;
}
if (p.p3 != 0) {
if (result.length() > 0) {
result += ", ";
}
result += to_string(p.p3);
}
result += "}";
return result;
}
int main() {
cout << foo({2}) << endl;
cout << foo({.p1 = 3, .p2 = "aa"}) << endl;
cout << foo({.p1 = 3, .p2 = "aa", .p3 = 3.1}) << endl;
//cout << foo({.p2 = "aa"}) << endl;
cout << foo({.p1 = 4}) << endl;
//cout << foo({.p3 = 5.0}) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFBhcmFtcyB7CglpbnQgcDE7CglzdHJpbmcgcDI7CiAgICBkb3VibGUgcDM7Cn07CgpzdHJpbmcgZm9vKGNvbnN0IFBhcmFtcyBwKSB7CiAgc3RyaW5nIHJlc3VsdCA9ICJ7IjsKICBpZiAocC5wMSAhPSAwKSB7CiAgCXJlc3VsdCArPSB0b19zdHJpbmcocC5wMSk7CiAgfQogIAogIGlmIChwLnAyLmxlbmd0aCgpID4gMCkgewogICAgaWYgKHJlc3VsdC5sZW5ndGgoKSA+IDApIHsKICAgIAlyZXN1bHQgKz0gIiwgIjsKICAgIH0KICAgIHJlc3VsdCArPSBwLnAyOwogIH0KICAKICBpZiAocC5wMyAhPSAwKSB7CiAgICBpZiAocmVzdWx0Lmxlbmd0aCgpID4gMCkgewogICAgCXJlc3VsdCArPSAiLCAiOwogICAgfQogIAlyZXN1bHQgKz0gdG9fc3RyaW5nKHAucDMpOwogIH0KICAKICByZXN1bHQgKz0gIn0iOwogIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkgewoJY291dCA8PCBmb28oezJ9KSA8PCBlbmRsOwoJY291dCA8PCBmb28oey5wMSA9IDMsIC5wMiA9ICJhYSJ9KSA8PCBlbmRsOwoJY291dCA8PCBmb28oey5wMSA9IDMsIC5wMiA9ICJhYSIsIC5wMyA9IDMuMX0pIDw8IGVuZGw7CgkvL2NvdXQgPDwgZm9vKHsucDIgPSAiYWEifSkgPDwgZW5kbDsKCWNvdXQgPDwgZm9vKHsucDEgPSA0fSkgPDwgZW5kbDsKCS8vY291dCA8PCBmb28oey5wMyA9IDUuMH0pIDw8IGVuZGw7CglyZXR1cm4gMDsKfQ==