En utilisant boost :: poids mouche T {l'intérieur struct} (c.-à-masselottes récursives)

StackOverflow https://stackoverflow.com/questions/4509892

  •  12-10-2019
  •  | 
  •  

Question

Je suis en train de définir un type de valeur de chemin de fichier immuable, en profitant de boost :: poids mouche aux composants de chemin de partage. Quelque chose comme ceci:

struct filepath_data;
typedef boost::flyweight<filepath_data> filepath;
struct filepath_data {
    boost::optional<filepath> parent;
    std::string name;
};

Bien sûr, cela ressemble à une structure récursive, mais boost::flyweight<T> ne fait pas (lui-même) contient une copie de T, juste une poignée à une T qui peut être regardé dans le support approprié, donc je pense que cette structure devrait travail.

Malheureusement, il ne compile pas, parce que quand g ++ frappe le typedef, il se plaint que filepath_data est incomplète.

Alors, la question est, puis-je utiliser la flexibilité et les arguments de modèle plus avancés pour boost::flyweight<> pour faire ce travail de la structure, et si oui, comment?

Était-ce utile?
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top