#include#include struct Dr { int a; }; struct Mg { int b; }; struct Msg { Dr dr; Mg mg; }; class MsgBuilder { public: Msg addData(const Dr& dr) { std::cout << "Dr" << std::endl; msg.dr = dr; return msg; } Msg addData(const Mg& mg) { std::cout << "Mg" << std::endl; msg.mg = mg; return msg; } Msg msg; }; int main() { Dr dr{10}; Mg mg{20}; MsgBuilder builder; std::apply([&builder](auto&&... args) { (builder.addData(args), ...); }, std::make_tuple(dr, mg)); std::cout << builder.msg.dr.a << ", " << builder.msg.mg.b << std::endl; return 0; }



