Utilizzando boost :: peso mosca struct all'interno T {} (cioè, pesi piuma ricorsive)

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

  •  12-10-2019
  •  | 
  •  

Domanda

Sto cercando di definire un file-path tipo di valore immutabili, approfittando di boost :: pesi mosca ai componenti percorso di condivisione. Qualcosa di simile a questo:

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

Naturalmente, questo appare come una struttura ricorsiva, ma in realtà non boost::flyweight<T> (a sua volta) contenere una copia di T, solo un handle a un T, che possono essere consultati nel supporto del caso, quindi penso che questa struttura dovrebbe lavoro.

Purtroppo, non si compila, perché quando g ++ colpisce il typedef si lamenta che filepath_data è incompleto.

Quindi, la domanda è: posso usufruire della flessibilità e argomenti di template più avanzate per boost::flyweight<> per fare questo lavoro la struttura, e se sì, come?

È stato utile?

Soluzione

Questo esempio mostra come combinare Boost.Flyweight con un ricorsivo struttura di dati utilizzando Boost.Variant e boost::recursive_wrapper . Forse si può utilizzare un approccio simile per il vostro problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top