ほとんどのコンパイラはすでにC++0xをサポートしています。C ++ 0xを使い始めましたか、それともxの定義を待っていますか?コードのリファクタリングを行う必要があります。新機能の使用を開始する必要がありますか?
9 に答える
C++0xはまだ完全な標準ではありません。国際的に認められた規格がリリースされる前に、多くの改訂が行われる可能性があります。それで、それはすべて異なります、あなたは何のためにコードを書いていますか?仕事の割り当ての場合は、通常のC ++を使い続け、標準が設定されるのを待って、プログラミングコミュニティに調整にかかる時間を与えます。本当に実装する必要のあるコードをリファクタリングしないでください。多くの問題が発生する可能性があります。
ただし、C ++ 0xを試してみるのは素晴らしいと思います。また、0xがグローバルに受け入れられている場合は、構文に精通していても問題はありません。
私は、まだそれをサポートしていないコンパイラ(つまりほとんど)nullptr
に使用し始めました。#define nullptr 0
あなたが提供したリンクから、あなたは実際にはTR1を意味しているように見えますが、実際にはC++0xではありません。そして、はい、私はかなり長い間新しいTR1ライブラリのほとんどを使用しています。なぜなら、それらの多くは以前のBoostライブラリだからです。
そして、私はすべての人にそれらを使用するように勧めることしかできません。
'0x + yまで本番コードの記述を延期します。ここで、yは、コンパイラーからバグを処理し、標準に準拠するようにするときです(標準が何であれ)。
しかし、開発のために?遊んだり、プロジェクトオイラーを書いたりするのに使っています。プレゼンテーションやニュースグループにも使っています。
何かをサポートするコンパイラはほとんどありません。実際、VSはTR1ライブラリのみをサポートし、gccは可変個引数テンプレート、右辺値、自動などのいくつかの機能をサポートします。Intelコンパイラにはいくつかあります。
私は主に次のような可変個引数テンプレートを使い始めました。
#ifdef HAvE_VARIADIC
template<typename... Args>
void format(std::string,Args... args);
#else
template<typename T1>
void format(std::string,T1 p1);
template<typename T1,typename T2,>
void format(std::string,T1 p1,T2 p2);
...
template<typename T1,typename T2,...,typename T10>
void format(std::string,T1 p1,T2 p2,..., T10 p10);
#endif
私たちはc++0xでたくさん遊んできましたが、gccがいくつかの機能をサポートするようになったら、それらが利用可能になり次第使用します。理由は単純です。autoキーワードを使用すると多くの入力を節約でき、右辺値参照を使用するとパフォーマンスが向上し、初期化子リストと可変個引数テンプレートを使用すると入力が少なくなり、コードがはるかに読みやすくなります。
実際、c ++ 0x標準の主な目標は私たちの目標でもあります。これは、これらの機能で競合他社に有利になるためです。そのため、まったく待たずに使用します。もちろん、マルチプラットフォームの互換性が必要な場合、この手順は受け入れられません。気にしない場合は、すぐに使ってください。勝つことができます。
はい、私はすでにC ++ 0xを使用しており、オープンソースライブラリとコードをリリースしています。私の将来のC++オープンソースプロジェクトはすべて、このバリアントで記述されます。可変個引数テンプレートパラメータとdecltype/autoを使用した後、戻ることができません!
VisualStudioが完全にサポートしたときに使用を開始します。現在、VS10はいくつかの機能のみをサポートしています。
VS6からVS2005への切り替えはまだ進行中です。おそらく、201x後半まで、新しい作業にC++0xコンパイラのみを使用することはないでしょう。