我想使用C ++ 11,但是不幸的是,为了确保与某些专有库的二进制兼容性,我必须确保可以使用仅支持C ++ 98的编译器来构建代码。有没有办法将某些C ++ 11构造(至少不需要标准库支持的那些构造)转换为其C ++ 98等效形式?
例如:
std::vector<int> v = ...;
for (auto &i : v)
std::cout << i << ' ';
转换成
std::vector<int> v = ...;
for (std::vector<int>::iterator it = v.begin(), end = v.end(); it != end; ++it) {
int &i = *it;
std::cout << i << ' ';
}
或类似的东西。
可以使用LibTooling(属于Clang项目的一部分,专门用于编写高级工具)自动正确地执行此转换(而不是在Perl中编写自己的解析器),从而创建源到源编译器。例子)。
请注意,有些C ++ 11/14构造无法像有范围的for循环那样容易地转换为C ++ 98/03代码。随处可见可变参数模板。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句