6

奇妙な質問かもしれませんが、大量の C++11 コードが与えられた場合に、自動型付けされた変数のすべての型を派生させ、それらの派生型でコードを書き換えるソフトウェアはありますか? また、イニシャライザリストの場合は?

その理由は、主に osx との移植性のために、コードの下位互換性のあるバージョン (非 C++11) を提供したいからです。自動入力と初期化リストは、コードを読みやすくするために最もよく使用する機能ですが、手動で削除することはできません。これは実際にコンパイラが自動型付けされた変数に対して行うことなので、あまりにも大げさではないでしょうか?

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が、ほとんどの場合、キャプチャ付きの正規表現検索を介して自動的に置き換えることができます。

于 2012-02-29T10:33:19.680 に答える
1

Eclipse CDT のリファクタリング プラグインの機能のように思えます (実際、私は少し前に学生に提案しました)。次の学期になると、そのようなものを作成するチームを見つけることができます. ただし、Eclipse CDT の情報は、常に適切なものを判断するには十分ではない場合があります。

一部の初期化リスト (ベクトルを埋めるものなど) については、boost::assign を代わりに使用できます。私たちの Mockator モック オブジェクト インフラストラクチャは、C++11 の初期化子リストの代わりに C++03 にこれらを使用します。

Boost ライブラリを恐れる必要はありません。少なくとも、ヘッダーのみとして提供されるものは恐れるべきではありません。個別のライブラリ パーツを持つものは、正しくセットアップするのが少し面倒になる可能性があります (ビルド状況は最近改善されました)。

于 2012-06-28T15:08:03.720 に答える