#include <list>
namespace detail
{
template<typename T>
void MakeList(std::list<typename std::remove_reference<T>::type>& l, T&& elem)
{
l.push_back(std::forward<T>(elem));
}
template<typename T, typename... Ts>
void MakeList(
std::list<typename std::remove_reference<T>::type>& l,
T&& elem, Ts&&... elems)
{
l.push_back(std::forward<T>(elem));
MakeList(l, std::forward<Ts>(elems)...);
}
}
template<typename T, typename... Ts>
std::list<typename std::remove_reference<T>::type> MakeList(
T&& elem, Ts&&... elems)
{
std::list<typename std::remove_reference<T>::type> l;
detail::MakeList(l, std::forward<T>(elem), std::forward<Ts>(elems)...);
return l;
}
#include <iostream>
#include <string>
struct Politician
{
std::string name;
std::string surname;
};
int main()
{
Politician p1{"John", "Smith"};
Politician p2{"Mike", "Black"};
Politician p3{"George", "White"};
std::list<Politician> myList = MakeList(p1, p2, p3);
for (auto const& p : myList)
{
std::cout << p.name << " " << p.surname << std::endl;
}
}
I2luY2x1ZGUgPGxpc3Q+CgpuYW1lc3BhY2UgZGV0YWlsCnsKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICB2b2lkIE1ha2VMaXN0KHN0ZDo6bGlzdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGU+JiBsLCBUJiYgZWxlbSkKICAgIHsKICAgICAgICBsLnB1c2hfYmFjayhzdGQ6OmZvcndhcmQ8VD4oZWxlbSkpOwogICAgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIFRzPgogICAgdm9pZCBNYWtlTGlzdCgKICAgICAgICBzdGQ6Omxpc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlPiYgbCwgCiAgICAgICAgVCYmIGVsZW0sIFRzJiYuLi4gZWxlbXMpCiAgICB7CiAgICAgICAgbC5wdXNoX2JhY2soc3RkOjpmb3J3YXJkPFQ+KGVsZW0pKTsKICAgICAgICBNYWtlTGlzdChsLCBzdGQ6OmZvcndhcmQ8VHM+KGVsZW1zKS4uLik7CiAgICB9Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIFRzPgpzdGQ6Omxpc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlPiBNYWtlTGlzdCgKICAgIFQmJiBlbGVtLCBUcyYmLi4uIGVsZW1zKQp7CiAgICBzdGQ6Omxpc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlPiBsOwogICAgZGV0YWlsOjpNYWtlTGlzdChsLCBzdGQ6OmZvcndhcmQ8VD4oZWxlbSksIHN0ZDo6Zm9yd2FyZDxUcz4oZWxlbXMpLi4uKTsKICAgIHJldHVybiBsOwp9CgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CgpzdHJ1Y3QgUG9saXRpY2lhbgp7CiAgICBzdGQ6OnN0cmluZyBuYW1lOwogICAgc3RkOjpzdHJpbmcgc3VybmFtZTsKfTsKCmludCBtYWluKCkKewogICAgUG9saXRpY2lhbiBwMXsiSm9obiIsICJTbWl0aCJ9OwogICAgUG9saXRpY2lhbiBwMnsiTWlrZSIsICJCbGFjayJ9OwogICAgUG9saXRpY2lhbiBwM3siR2VvcmdlIiwgIldoaXRlIn07CgogICAgc3RkOjpsaXN0PFBvbGl0aWNpYW4+IG15TGlzdCA9IE1ha2VMaXN0KHAxLCBwMiwgcDMpOwoKICAgIGZvciAoYXV0byBjb25zdCYgcCA6IG15TGlzdCkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgcC5uYW1lIDw8ICIgIiA8PCBwLnN1cm5hbWUgPDwgc3RkOjplbmRsOwogICAgfQp9Cg==