dimanche 12 avril 2020

incomplete type support for list

I implemented a list with similar API to std::list but it fails to compile

struct A { my_list<A> v; };

The list has a base class that has a member a base_node which has the prev and next fields and node (which is derived from base_node) holds the T value (which is the template parameter for the list). The compilation error is

error: ‘node<T>::val’ has incomplete type
     T val;
       ^~~
note: forward declaration of ‘struct A’

I looked in GCC code and it seems like they hold a buffer of bytes of size T so not sure how it works for them. What is the trick to support incomplete type?

Aucun commentaire:

Enregistrer un commentaire