#include <iostream>
using namespace std;
#include <cstddef>
namespace test
{
template<class _E>
class initializer_list
{
public:
typedef _E value_type;
typedef const _E& reference;
typedef const _E& const_reference;
typedef size_t size_type;
typedef const _E* iterator;
typedef const _E* const_iterator;
private:
iterator _M_array;
size_type _M_len;
constexpr initializer_list(const_iterator __a, size_type __l)
: _M_array(__a), _M_len(__l) { }
public:
constexpr initializer_list() : _M_array(0), _M_len(0) { }
constexpr size_type
size() { return _M_len; }
constexpr const_iterator
begin() { return _M_array; }
constexpr const_iterator
end() { return begin() + size(); }
};
template<class _Tp>
constexpr const _Tp*
begin(initializer_list<_Tp> __ils)
{ return __ils.begin(); }
template<class _Tp>
constexpr const _Tp*
end(initializer_list<_Tp> __ils)
{ return __ils.end(); }
}
int main() {
std::initializer_list<int> std_list = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
test::initializer_list<int> test_list = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2luY2x1ZGUgPGNzdGRkZWY+CgpuYW1lc3BhY2UgdGVzdAp7CiAKdGVtcGxhdGU8Y2xhc3MgX0U+CmNsYXNzIGluaXRpYWxpemVyX2xpc3QKewpwdWJsaWM6CiAgICB0eXBlZGVmIF9FICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogICAgdHlwZWRlZiBjb25zdCBfRSYgICAgICAgcmVmZXJlbmNlOwogICAgdHlwZWRlZiBjb25zdCBfRSYgICAgICAgY29uc3RfcmVmZXJlbmNlOwogICAgdHlwZWRlZiBzaXplX3QgICAgICAgICAgc2l6ZV90eXBlOwogICAgdHlwZWRlZiBjb25zdCBfRSogICAgICAgaXRlcmF0b3I7CiAgICB0eXBlZGVmIGNvbnN0IF9FKiAgICAgICBjb25zdF9pdGVyYXRvcjsKIApwcml2YXRlOgogICAgaXRlcmF0b3IgICAgICAgICAgX01fYXJyYXk7CiAgICBzaXplX3R5cGUgICAgICAgICBfTV9sZW47CiAKICAgIGNvbnN0ZXhwciBpbml0aWFsaXplcl9saXN0KGNvbnN0X2l0ZXJhdG9yIF9fYSwgc2l6ZV90eXBlIF9fbCkKICAgIDogX01fYXJyYXkoX19hKSwgX01fbGVuKF9fbCkgeyB9CiAKcHVibGljOgogICAgY29uc3RleHByIGluaXRpYWxpemVyX2xpc3QoKSA6IF9NX2FycmF5KDApLCBfTV9sZW4oMCkgeyB9CiAKICAgIGNvbnN0ZXhwciBzaXplX3R5cGUKICAgIHNpemUoKSB7IHJldHVybiBfTV9sZW47IH0KIAogICAgY29uc3RleHByIGNvbnN0X2l0ZXJhdG9yCiAgICBiZWdpbigpIHsgcmV0dXJuIF9NX2FycmF5OyB9CiAKICAgIGNvbnN0ZXhwciBjb25zdF9pdGVyYXRvcgogICAgZW5kKCkgeyByZXR1cm4gYmVnaW4oKSArIHNpemUoKTsgfQp9OwogCnRlbXBsYXRlPGNsYXNzIF9UcD4KICAgIGNvbnN0ZXhwciBjb25zdCBfVHAqCiAgICBiZWdpbihpbml0aWFsaXplcl9saXN0PF9UcD4gX19pbHMpCnsgcmV0dXJuIF9faWxzLmJlZ2luKCk7IH0KIAp0ZW1wbGF0ZTxjbGFzcyBfVHA+CiAgICBjb25zdGV4cHIgY29uc3QgX1RwKgogICAgZW5kKGluaXRpYWxpemVyX2xpc3Q8X1RwPiBfX2lscykKeyByZXR1cm4gX19pbHMuZW5kKCk7IH0KIAp9CgppbnQgbWFpbigpIHsKCXN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+IHN0ZF9saXN0ID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5IH07Cgl0ZXN0Ojppbml0aWFsaXplcl9saXN0PGludD4gdGVzdF9saXN0ID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5IH07CglyZXR1cm4gMDsKfQ==
prog.cpp: In function 'int main()':
prog.cpp:54:73: error: could not convert '{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}' from '<brace-enclosed initializer list>' to 'test::initializer_list<int>'
test::initializer_list<int> test_list = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
^