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

Automatically rewrite c++11 auto keyword into derived types

本文关键字:重写 派生 类型 关键字 auto c++11      更新时间:2023-10-16

也许这是一个奇怪的问题,但有没有任何软件可以在给定一堆c++11代码的情况下,派生所有类型的自动类型变量,并用这些派生类型重写代码?也适用于初始值设定项列表?

理由是,我们希望提供一个向后兼容的代码版本(非C++11),主要用于osx的可移植性。自动键入和初始值设定项列表是我们使用最多的功能,因为它们使代码可读性更强,但手动删除它们是不可能的。事实上,这就是编译器对自动类型变量所做的,这似乎并不太牵强?

查看BOOST_AUTO和/或BOOST_TYPEOF

  • http://www.boost.org/doc/libs/1_48_0/doc/html/typeof/refe.html
  • http://www.boost.org/doc/libs/1_48_0/doc/html/typeof/refe.html#typeof.typo

你可以替代

 auto x = foo();

带有

 BOOS_AUTO(x, foo());

如果你想"管理"一个decltype,你必须求助于BOOST_TYPEOF。请注意,这两个宏都有一些变体,您希望了解更多关于的信息

如果您可以使用Boost,那么您可以查看Boost::typeof。它不会像auto那样做,但在大多数情况下,它可以通过带有捕获搜索的regex自动替换。

听起来像是EclipseCDT重构插件的一个特性(实际上我不久前就向我的学生提出了这样的建议)。可能是下学期我可以找到一个团队来创建这样的。然而,EclipseCDT的信息可能不足以始终确定正确的内容。

对于一些初始化器列表,例如填充向量的列表,boost::assign可以作为替换。我们的Mockator模拟对象基础结构将这些用于C++03,而不是C++11中的初始值设定项列表。

您不应该害怕Boost库,至少不要害怕那些只作为头的库。那些有单独的库部件的程序要正确设置可能会有点麻烦(构建情况最近有所改善)。