Potrzebuję wydrukować nazwy wciętych szablonów do celów debugowania. Na przykład, zamiast pojedynczej linii, chciałbym, aby wciąć nazwę tak:Nazwa szablonu C++ ładna drukowana
boost::phoenix::actor<
boost::phoenix::composite<
boost::phoenix::less_eval,
boost::fusion::vector<
boost::phoenix::argument<0>,
boost::phoenix::argument<1>,
zacząłem pisać własne, ale robi się być skomplikowane. Czy istnieje istniejące rozwiązanie?
jeśli go nie ma, czy możesz mi pomóc dokończyć wdrożenie? Poinformuję, jeśli tak.
Dzięki
to co typeid.name wygląda,
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_> > >
To jest mój cel
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 >
tak, że mogę rzeczywiście przeczytać oświadczenie
Skąd pochodzą nazwy szablonów, które próbujesz wydrukować? Czy tworzysz je samemu, czy analizujesz wcześniej istniejące dane wejściowe, lub ... Rozwiązanie zależy nie tylko od tego, co próbujesz wydrukować, ale także od tego, skąd pochodzi dane wejściowe dla tego wyjścia. –
Jak ten wpis jest powiązany z Twoją odpowiedzią poniżej? –
Wygląda na to, że próbuje wydrukować ślad stosu. Ale chce, aby typy szablonów wyglądały ładniej, więc chce zastąpić je wersjami, które zawierają dodatkowe odstępy, w tym nowe linie. –