use*_*464 13 c++ static-analysis c++11
我有一些C++ 11代码使用auto
推断类型,我必须转换为C++ 98.我将如何转换代码,在实际类型中替换所有实例auto
?
Sho*_*hoe 12
它将是一个PITA,但您可以声明一个接受单个类型参数的不完整的结构模板.
给定x
您想要知道其类型的变量,您可以使用struct,decltype(x)
这将导致编译器错误,该错误将显示推断类型.
例如:
template<class Type> struct S;
int main() {
auto x = ...;
S<decltype(x)>();
}
Run Code Online (Sandbox Code Playgroud)
这将产生以下形式的错误消息:
error: implicit instantiation of undefined template 'S<X>' (clang++)
error: invalid use of incomplete type 'struct S<X>' (g++)
Run Code Online (Sandbox Code Playgroud)
与X
被推断出的类型.在这种特殊情况下,类型是int
.
琐事:这是Scott Meyer在最近的NDC 2014视频中推荐的(我不记得哪一个).
正如auto
在编译时所知,您需要与编译器进行互操作.
一个选项是Clang编译器的LibTooling库,它提供了可以基于静态分析工具的基础结构.例如,查看他们的重构示例代码,.c_str()
从代码中删除多余的调用.我想你可以写一个类似的工具转换auto
成推断类型.
归档时间: |
|
查看次数: |
1546 次 |
最近记录: |