Ho bisogno di stampare i nomi dei template rientrati a scopo di debug. Ad esempio, invece di una sola linea, vorrei rientrare nome come questo:Nome modello C++ pretty print
boost::phoenix::actor<
boost::phoenix::composite<
boost::phoenix::less_eval,
boost::fusion::vector<
boost::phoenix::argument<0>,
boost::phoenix::argument<1>,
ho iniziato a scrivere il mio, ma è di arrivare a essere complicato. Esiste una soluzione esistente?
se non ce n'è uno, puoi aiutarmi a finire la mia implementazione? Lo posterò in questo caso.
Grazie
questo è ciò che sembra, typeid.name
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::less_eval,
boost::fusion::vector<boost::phoenix::argument<0>,
boost::phoenix::composite<boost::phoenix::multiplies_eval,
boost::fusion::vector<boost::phoenix::argument<1>, boost::phoenix::argument<2>,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void >, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_> > >
questo è il mio obiettivo
6 boost::phoenix::actor<
7 boost::phoenix::composite<
8 boost::phoenix::less_eval,
9 boost::fusion::vector<
10 boost::phoenix::argument<0>,
11 boost::phoenix::composite<
12 boost::phoenix::multiplies_eval,
13 boost::fusion::vector<
14 boost::phoenix::argument<1>,
15 boost::phoenix::argument<2>,
16 boost::fusion::void_,
17 boost::fusion::void_,
18 boost::fusion::void_,
19 boost::fusion::void_,
20 boost::fusion::void_,
21 boost::fusion::void_,
22 boost::fusion::void_,
23 boost::fusion::void >, // indentation messed up
24 boost::fusion::void_,
25 boost::fusion::void_,
26 boost::fusion::void_,
27 boost::fusion::void_,
28 boost::fusion::void_,
29 boost::fusion::void_,
30 boost::fusion::void_,
31 boost::fusion::void_
32 >
33 >
34 >
modo che io possa effettivamente letto dichiarazione
Dove provengono questi nomi modello che stai cercando di stampare? Li stai creando tu stesso, o stai analizzando input preesistenti, o ... La soluzione dipenderà non solo da ciò che stai cercando di produrre, ma anche da dove proviene l'input per questa uscita. –
In che modo questo post è correlato alla tua risposta qui sotto? –
Sembra che stia cercando di stampare una traccia dello stack. Ma vuole che i tipi di template sembrino più belli, quindi sta cercando di sostituirli con versioni che includono spaziatura extra, incluse le newline. –