gpt4 book ai didi

C++ 模板名称 pretty-print

转载 作者:可可西里 更新时间:2023-11-01 18:37:21 25 4
gpt4 key购买 nike

出于调试目的,我需要打印缩进的模板名称。例如,我想像这样缩进名称而不是单行:

boost::phoenix::actor<
boost::phoenix::composite<
boost::phoenix::less_eval,
boost::fusion::vector<
boost::phoenix::argument<0>,
boost::phoenix::argument<1>,

我开始自己写,但越来越复杂了。有现成的解决方案吗?

如果没有,你能帮我完成我的实现吗?如果是这样,我会发布它。

谢谢

这就是 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_> > >

这是我的目标

 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 >

这样我才能真正阅读声明

最佳答案

怎么样,复制到剪贴板,然后

$ xclip -o | clang-format

例如,这会将 OP 的模板用于

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_> > >

不理想,因为其中某处存在错误。但是这样很容易找到错误(中间的void之后多余的>应该移到最后)。如果我们修复它,我们得到

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_>>>>>

关于C++ 模板名称 pretty-print ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2885597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com