On 10 March 2017 at 14:58, Kjell Ahlstedt <kjell.ahlst...@bredband.net>
wrote:

> I don't think it has been considered, and certainly not rejected. It's a
> good idea.
>

Cool!



> A lot of details can be discussed. There could be
>
> Gtk::Container::add(std::initializer_list<Gtk::Widget*> widgets);
> Gtk::Box::pack_start(std::initializer_list<Gtk::Widget*> widgets,
> PackOptions options);
> Gtk::Box::pack_end(std::initializer_list<Gtk::Widget*> widgets,
> PackOptions options);
> etc.
>
> Indeed. I just didn't want to suggest too many variations at first, in
case even the most basic ones weren't an option. :D



> It would be even better with a list of references:
> std::initializer_list<Gtk::Widget&>. Is that possible, or would the
> compiler try to copy the widgets?
>

Containers of references aren't possible in C++. The closest thing to this,
I guess, is std::reference_wrapper<Gtk::Widget> - i.e. a utility class that
wraps a pointer and gives it reference-like semantics (plus a few extras).

This might (I dunno) mean some extra boilerplate or compromise, but it
would probably be worth it to ensure none of the passed elements are nullptr.
So, that's a good point. We might want to guard against that.
Alternatively, we could just tell users that passing a nullptr is UB and
trust them to do it right. I guess this is one to debate.

Even then, yes, initializer_list is still restricted to having implicitly const
elements, so the reference_wrappers would be copied, but again, since they
too are just pointers really, that's fine. (but IMO movable-from
initializer_lists are sorely needed for other cases, though)
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to