[cxx-conversion] Convert vec.[ch] to C++ [1/3] (issue6233044)

Gabriel Dos Reis gdr@integrable-solutions.net
Fri May 25 18:35:00 GMT 2012


On Fri, May 25, 2012 at 1:27 PM, Tom Tromey <tromey@redhat.com> wrote:
>>>>>> "Diego" == Diego Novillo <dnovillo@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



More information about the Gcc-patches mailing list