#include <initializer_list>
#include <vector>
#if 1 // Not in C++11 // make_index_sequence
#include <cstdint>
template <std::size_t...> struct index_sequence {};
template <std::size_t N, std::size_t... Is>
struct make_index_sequence : make_index_sequence<N - 1, N - 1, Is...> {};
template <std::size_t... Is>
struct make_index_sequence<0u, Is...> : index_sequence<Is...> {};
#endif // make_index_sequence
namespace detail
{
template <std::size_t... Is, typename T>
std::initializer_list<T> make_initializer_list(const T& t, index_sequence<Is...>)
{
return { (static_cast<void>(Is), t)... };
}
}
template <std::size_t N, typename T>
std::initializer_list<T> make_initializer_list(const T& t)
{
return detail::make_initializer_list(t, make_index_sequence<N>());
}
int main()
{
std::initializer_list<int> a = make_initializer_list<3>(42);
std::vector<int> v = make_initializer_list<3>(42);
return 0;
}
I2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CiNpbmNsdWRlIDx2ZWN0b3I+CgojaWYgMSAvLyBOb3QgaW4gQysrMTEgLy8gbWFrZV9pbmRleF9zZXF1ZW5jZQojaW5jbHVkZSA8Y3N0ZGludD4KCnRlbXBsYXRlIDxzdGQ6OnNpemVfdC4uLj4gc3RydWN0IGluZGV4X3NlcXVlbmNlIHt9OwoKdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4sIHN0ZDo6c2l6ZV90Li4uIElzPgpzdHJ1Y3QgbWFrZV9pbmRleF9zZXF1ZW5jZSA6IG1ha2VfaW5kZXhfc2VxdWVuY2U8TiAtIDEsIE4gLSAxLCBJcy4uLj4ge307Cgp0ZW1wbGF0ZSA8c3RkOjpzaXplX3QuLi4gSXM+CnN0cnVjdCBtYWtlX2luZGV4X3NlcXVlbmNlPDB1LCBJcy4uLj4gOiBpbmRleF9zZXF1ZW5jZTxJcy4uLj4ge307CgojZW5kaWYgLy8gbWFrZV9pbmRleF9zZXF1ZW5jZQoKbmFtZXNwYWNlIGRldGFpbAp7CiAgICB0ZW1wbGF0ZSA8c3RkOjpzaXplX3QuLi4gSXMsIHR5cGVuYW1lIFQ+CiAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gbWFrZV9pbml0aWFsaXplcl9saXN0KGNvbnN0IFQmIHQsIGluZGV4X3NlcXVlbmNlPElzLi4uPikKICAgIHsKICAgICAgICByZXR1cm4geyAoc3RhdGljX2Nhc3Q8dm9pZD4oSXMpLCB0KS4uLiB9OwogICAgfQp9Cgp0ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTiwgdHlwZW5hbWUgVD4Kc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IG1ha2VfaW5pdGlhbGl6ZXJfbGlzdChjb25zdCBUJiB0KQp7CiAgICByZXR1cm4gZGV0YWlsOjptYWtlX2luaXRpYWxpemVyX2xpc3QodCwgbWFrZV9pbmRleF9zZXF1ZW5jZTxOPigpKTsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50PiBhID0gbWFrZV9pbml0aWFsaXplcl9saXN0PDM+KDQyKTsKICAgIHN0ZDo6dmVjdG9yPGludD4gdiA9IG1ha2VfaW5pdGlhbGl6ZXJfbGlzdDwzPig0Mik7CgogICAgcmV0dXJuIDA7Cn0K