プログラミング言語としてC++を使用して、長期にわたるプロジェクトを開始します。
2011年にC++0xが発売されると読んだので、C++11と呼んでいました。
C ++ 11がリリースされたとき、私たちはまだプロジェクトを開発中であり、新しいC++標準の機能を今すぐ使用して次のことができるかどうかを知りたいと思います。
- 古いC++よりも高速なコードと
- 新しい規格が到着したときに簡単に切り替えますか?
プログラミング言語としてC++を使用して、長期にわたるプロジェクトを開始します。
2011年にC++0xが発売されると読んだので、C++11と呼んでいました。
C ++ 11がリリースされたとき、私たちはまだプロジェクトを開発中であり、新しいC++標準の機能を今すぐ使用して次のことができるかどうかを知りたいと思います。
標準が出たからといって、コンパイラが魔法のように更新されるわけではありません。ほとんどのコンパイラが以前の標準を適切にサポートするのに何年もかかり、エクスポート(C ++ 0xから削除)などの一部の機能はあまりサポートされませんでした。 。新機能の最初の実装によっては、優れた戦略でもありません。締め切りに間に合う場合は、他の人を実験者にすることを好みます。
また、私はそれをC ++11と呼ぶのにそれほど速くはありません-標準プロセスは遅延の可能性に満ちています。
編集: RWライブラリを使用しているようです。この場合、新しい標準の多くの機能は、テンプレートの作成者とC ++標準ライブラリのユーザーを対象としているため、すぐには関心がないでしょう。
Visual C ++ 2010および最新のgccバージョン(-std = c ++ 0x)は、C ++ 11の新機能をサポートしていますが、すべてではありません。特に、中括弧を使用して新しい初期化構文の使用を開始できます。これは、C++11での最大の構文変更であるIMHOです。また、一方の部分がC ++ 98スタイルを使用し、もう一方の部分がC ++ 11スタイルを使用している場合、コードに最も矛盾を追加する変更でもあります。
スコットマイヤーズ(「EffectiveC ++」シリーズの作者)は先週、次のようにアップロードしました。
これは、ある意味で、このスレッドの別の回答で言及されている別のリンクに似ています。主な違いは、マイヤーズのリンクには彼が自分で試したものしか含まれていないということです。今後数ヶ月で更新され続けると思います。
また、これが私がこれを知った方法であり、彼はcomp.std.c ++で、C ++ 0xの教育資料に関連する何かに取り組んでいることを示唆しました(明らかに彼のトレーニングコースを超えています)が、これは今のところ推測的すぎます、それでは、上記で提供した最初のリンクに固執しましょう。
一度にすべての新機能に切り替えるとは考えないでください。それぞれの新しい言語機能を、それ自体のメリットとその実装の品質について評価します。
たとえばlong long
、C ++ 0xで検討される前から、かなり一般的なコンパイラ拡張機能であり、新しいauto
構文は有用であり、十分にサポートされている可能性があります。可変個引数テンプレートを使用したクラス内decltype
の新しい構文を持つ関数の型推論や解析の新しいルールなど、いくつかの新機能の複雑な組み合わせには非常に注意する必要があります。->
>>
使用しているコンパイラによって異なります。
例として、GCCにはC++11に含まれるいくつかの機能を含むtr1拡張機能があります。