6

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

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

4

3 回答 3

3

查看 BOOST_AUTO 和/或 BOOST_TYPEOF

你可以代替

 auto x = foo();

 BOOS_AUTO(x, foo());

如果你想“管理”一个 decltype,你必须求助于 BOOST_TYPEOF。请注意,这两个宏都有一些变体,您需要了解更多信息

于 2012-02-29T11:49:25.837 回答
2

如果您可以使用 Boost,那么您可能会查看boost::typeof。它不会完全执行该auto操作,但在大多数情况下,它可以通过 regex-with-captures 搜索自动替换。

于 2012-02-29T10:33:19.680 回答
1

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

对于一些初始化器列表,例如那些填充向量的列表, boost::assign 可能是一个替代品。我们的 Mockator 模拟对象基础设施将这些用于 C++03,而不是 C++11 中的初始值设定项列表。

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

于 2012-06-28T15:08:03.720 回答