22

プログラミング言語としてC++を使用して、長期にわたるプロジェクトを開始します。

2011年にC++0xが発売されると読んだので、C++11と呼んでいました。

C ++ 11がリリースされたとき、私たちはまだプロジェクトを開発中であり、新しいC++標準の機能を今すぐ使用して次のことができるかどうかを知りたいと思います。

  • 古いC++よりも高速なコードと
  • 新しい規格が到着したときに簡単に切り替えますか?
4

6 に答える 6

14

このページでは、gcc(メインのUnixコンパイラ)、MSVC(メインのMicrosoftコンパイラ)、およびその他のいくつか(Intelを含む)でサポートされているC++0xの部分を示します。Clangの追加情報はここにありますが、現在の標準に対するC++のサポートはまだ不完全だと思います。

于 2010-03-16T09:22:42.943 に答える
13

標準が出たからといって、コンパイラが魔法のように更新されるわけではありません。ほとんどのコンパイラが以前の標準を適切にサポートするのに何年もかかり、エクスポート(C ++ 0xから削除)などの一部の機能はあまりサポートされませんでした。 。新機能の最初の実装によっては、優れた戦略でもありません。締め切りに間に合う場合は、他の人を実験者にすることを好みます。

また、私はそれをC ++11と呼ぶのにそれほど速くはありません-標準プロセスは遅延の可能性に満ちています。

編集: RWライブラリを使用しているようです。この場合、新しい標準の多くの機能は、テンプレートの作成者とC ++標準ライブラリのユーザーを対象としているため、すぐには関心がないでしょう。

于 2010-03-16T09:36:25.993 に答える
4

Visual C ++ 2010および最新のgccバージョン(-std = c ++ 0x)は、C ++ 11の新機能をサポートしていますが、すべてではありません。特に、中括弧を使用して新しい初期化構文の使用を開始できます。これは、C++11での最大の構文変更であるIMHOです。また、一方の部分がC ++ 98スタイルを使用し、もう一方の部分がC ++ 11スタイルを使用している場合、コードに最も矛盾を追加する変更でもあります。

于 2010-03-16T09:20:49.763 に答える
4

スコットマイヤーズ(「EffectiveC ++」シリーズの作者)は先週、次のようにアップロードしました。

gccおよびMSVCでのC++0x機能の可用性の概要

これは、ある意味で、このスレッドの別の回答で言及されている別のリンクに似ています。主な違いは、マイヤーズのリンクには彼が自分で試したものしか含まれていないということです。今後数ヶ月で更新され続けると思います。

また、これが私がこれを知った方法であり、彼はcomp.std.c ++で、C ++ 0xの教育資料に関連する何かに取り組んでいることを示唆しました(明らかに彼のトレーニングコースを超えています)が、これは今のところ推測的すぎます、それでは、上記で提供した最初のリンクに固執しましょう。

于 2010-03-16T17:25:00.587 に答える
2

一度にすべての新機能に切り替えるとは考えないでください。それぞれの新しい言語機能を、それ自体のメリットとその実装の品質について評価します。

たとえばlong long、C ++ 0xで検討される前から、かなり一般的なコンパイラ拡張機能であり、新しいauto構文は有用であり、十分にサポートされている可能性があります。可変個引数テンプレートを使用したクラス内decltypeの新しい構文を持つ関数の型推論や解析の新しいルールなど、いくつかの新機能の複雑な組み合わせには非常に注意する必要があります。->>>

于 2010-03-16T13:02:31.203 に答える
1

使用しているコンパイラによって異なります。

例として、GCCにはC++11に含まれるいくつかの機能を含むtr1拡張機能があります。

于 2010-03-16T09:16:46.423 に答える