I’m implementing C++ proposal N4166, “Movable initializer lists.” It defines a
class derived from initializer_list. What is the best way to initialize such an
object?
Currently, the construction of initializer_list objects is a bit odd. They are
not aggregates, because the fields are private, but they are constructed using
a CONSTRUCTOR node. Despite this, the library defines a private C++ constructor
with a misleading comment that the compiler is able to call it.
I tried adding base-class fields to the derived-class constructor node, but
that doesn’t seem to work. Is aggregate initialization still viable?
I tried forming a call expression using build_special_member_call and
build_cplus_new. That works, but it still complains that the constructor is
private despite the LOOKUP_PROTECT flag being unset. If the library constructor
is necessary, how can it live up to its promise?
Thanks!