On Fri, May 25, 2012 at 1:27 PM, Tom Tromey <tro...@redhat.com> wrote: >>>>>> "Diego" == Diego Novillo <dnovi...@google.com> writes: > > Diego> +struct GTY(()) vec_prefix > Diego> +{ > Diego> + unsigned num; > Diego> + unsigned alloc; > Diego> +}; > Diego> + > Diego> +/* Vector type, user visible. */ > Diego> +template<typename T> > Diego> +struct GTY(()) vec_t > Diego> +{ > Diego> + vec_prefix prefix; > Diego> + T GTY((length ("%h.prefix.num"))) vec[1]; > Diego> +}; > > I'm curious why you didn't use inheritance here. > > template<typename T> > struct GTY(()) vec_t : public vec_prefix > { > ... > };
Very good question. I thought about it, and then offered myself "ah, so that vec_t<int> is still a POD type", allowing some of the usual "C" practices, whereas inheritance would have ruled that out as C++03 portable code. -- Gaby