Necesito imprimir nombres de plantillas con sangría para depuración. Por ejemplo, en lugar de una sola línea, me gustaría sangrar nombre de la siguiente manera:Nombre de la plantilla de C++ pretty print
boost::phoenix::actor<
boost::phoenix::composite<
boost::phoenix::less_eval,
boost::fusion::vector<
boost::phoenix::argument<0>,
boost::phoenix::argument<1>,
empecé a escribir mi propia pero es llegar a ser complicado. ¿Existe una solución existente?
si no hay uno, ¿me pueden ayudar a terminar mi implementación? Lo publicaré si es así.
Gracias
esto es lo que parece, 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_> > >
este es mi objetivo
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 >
por lo que realmente puedo leer la declaración
¿Dónde están estos nombres de plantilla vienen de que usted está tratando de imprimir? ¿Los está creando usted mismo, o está analizando entradas preexistentes, o ... La solución dependerá no solo de lo que está tratando de generar, sino también de dónde proviene la entrada para esta salida. –
¿Cómo se correlaciona esta publicación con su respuesta a continuación? –
Parece que está intentando imprimir un seguimiento de pila. Pero quiere que los tipos de plantilla se vean mejor, por lo que está buscando reemplazarlos con versiones que incluyen espaciado adicional, incluidas las líneas nuevas. –