n00*_*ki3 25 c++ templates metaprogramming seqan
我想调试一些模板化代码以更好地理解它.
不幸的是,我是模板元编程的新手,我很难进入.
当我尝试输出预处理的源文件时,我获得了125 000行代码:/
那么我有没有办法看到生成的代码?(我正在使用的库是SeqAn)
jal*_*alf 24
一般来说,不可能做到这一点.模板只是C++语言的一部分,它们不是一个单独的预处理器,因此它们不生成C++代码.
通常的解决方案是使用静态断言和其他测试来填充代码,以验证正确的模板是否以正确的方式实例化.
一旦开始迷失元编程,这个简单的技巧可以帮助您确定模板参数的确实类型:
// given a variable t of an unknown type T
int*** i = t;
Run Code Online (Sandbox Code Playgroud)
当编译器遇到这种情况时,它会打印出一个漂亮而简单的错误消息"无法转换<long, detailed typename>
为int***",允许您轻松验证模板参数T实际上是您认为它应该是的类型.
这可能是您的问题的答案:
似乎已经满足了最后一个问的人 - 虽然我无法想象为什么!C语言中C++编译器的输出通常是不可读的,因为它不是为了帮助理解,而仅仅是一种可移植的汇编语言.
归档时间: |
|
查看次数: |
8556 次 |
最近记录: |