自动将c ++ 11 auto关键字重写为派生类型

时间:2012-02-29 10:18:59

标签: c++ c++11 auto

也许是一个奇怪的问题,但是有没有可用的软件,给定一堆c ++ 11代码,派生所有类型的自动类型变量并用这些派生类型重写代码?还有初始化列表吗?

原因是我们希望提供代码的向后兼容版本(非C ++ 11),主要是为了与osx的可移植性。自动键入和初始化列表是我们最常使用的功能,因为它们使代码更具可读性,但是手动删除它们是不行的。 事实上,这是编译器对自动类型变量所做的事情,它看起来并不太牵强吗?

3 个答案:

答案 0 :(得分:3)

查看BOOST_AUTO和/或BOOST_TYPEOF

你可以替换

 auto x = foo();

 BOOS_AUTO(x, foo());

如果你想“管理”一个decltype,你必须求助于BOOST_TYPEOF。请注意,这两个宏都有一些您想要阅读更多关于

的变体

答案 1 :(得分:2)

如果您可以使用Boost,那么您可以查看boost::typeof。它不会完全与auto完全相同,但在大多数情况下,它可以通过带有正则表达式的捕获搜索自动替换。

答案 2 :(得分:1)

听起来像是Eclipse CDT重构插件的一个功能(我实际上是在前一段时间向我的学生提出过这样的功能)。可能是下学期我可以找到一个团队来创建这样的。但是,Eclipse CDT的信息可能不足以始终确定正确的内容。

对于某些启动器列表,例如填充矢量的启动器列表,boost :: assign可能是替代品。我们的Mockator模拟对象基础结构将这些用于C ++ 03而不是C ++ 11中的初始化列表。

你不应该害怕Boost库,至少不是那些仅作为头文件的库。那些具有单独的库部件的人可能会有一些麻烦来正确设置(最近构建情况有所改善)。