質問

私たちの多くが知っているように (そして、もっと多くの人が知らないのですが)、C++ は現在、国際標準の次の改訂版に向けた最終草案を作成中であり、約 2 年以内に発行される予定です。草案と論文は現在、次のサイトから入手できます。 委員会のウェブサイト. 。あらゆる種類の新機能が追加されていますが、その最大のものはコンセプトとラムダです。非常に包括的なものがあります ウィキペディアの記事 多くの新機能を備えています。GCC 4.3 以降の実装 いくつかの C++0x 機能.

新しい機能に関する限り、私は型特性 (および適切な概念) がとても好きですが、私の明確なリーダーは可変個引数テンプレートです。0x までは、長いテンプレート リストには通常 Boost プリプロセッサが関与しており、作成するのが非常に不快でした。これにより作業が非常に簡単になり、C++0x テンプレートを可変個引数テンプレートを使用する完全な関数型言語のように扱うことができるようになります。私はすでにそれらを使用していくつかの非常にクールなコードを書いているので、もっと頻繁に使用するのが待ちきれません!

では、最も期待している機能は何ですか?

役に立ちましたか?

解決

自動 変数の型を推論するためのキーワード

他のヒント

ラムダとイニシャライザのリスト。

また、最終的に C++ をガベージ コレクション モデルに取り込みやすくするための変更は、非常に興味深いようです。おそらく C++1x は実際にガベージ コレクションを導入するでしょうが、0x/10 は不測の事態に備えて設定しているだけです。

右辺値の参照が必要です。

他のすべての新機能は、(機能はともかく) なくても簡単に生きていけるものです。しかし、これまでのところ、C++ には右辺値が欠如しているため、何百ものテンプレート ライブラリ作成者が壊れた右辺値参照の問題を「ハッキング」する必要がありました。

可変個引数テンプレート!(これを r 値参照と組み合わせると、完全な転送が実現します。)

スレッドとアトミック。

現在のマルチコア プロセッサでは、標準の C++0x は C++07 であるはずです。

G.

厳密に型指定された列挙型 私の投票を集めてください。Pascal がこれらを実現してから 40 年ほどしか経っていないため、C++ がようやく追いついてきたのは嬉しいことです。

ただし、規格の発行は実際には特別な出来事ではありません。さらに重要なのは、使用したい機能が現実世界のツールチェーンで実際に完全かつ確実にサポートされているかどうかです。 既知のコンパイラではコンパイルできない標準準拠のコードを書くことを楽しんでいるように見える人もいます。 彼らに幸運を祈ります。

  1. Boost ライブラリの一部 (shared_ptr<> とリストの先頭にある binding) を組み込む必要があります。

  2. テンプレートのインスタンス化を制御することで、膨大なコンパイル時間の問題が最終的に解決され、大規模なプロジェクトで最新のテンプレート コードを使用できるようになります。

  3. テンプレートの typedef

他にも小さいけれど重要なことがたくさんありますが、実稼働コードでは重要です。

私にとってコンセプトは受け継がれています。しかし、初期化子リスト、ラムダ、および可変個引数テンプレートが僅差で 2 番目にあります。

どちらか決められない Null ポインタの種類, タプルの型, 、 または 正規表現. 。「Foreach」もそこにあります。「スマートポインター」は言うまでもありません...:-)

基本的には更新をとても楽しみにしています。

個人的には、null ポインター型を多用すると多くのバグが見つかると思います。タプルはリレーショナル データを扱うのに最適です。クールなものがたくさんあります。

それは大きくありませんが、私は本当のアイデアが大好きです nullptr. 。git-go から直接キーワードにする必要がありました。

私にとっての締めくくり。

自動キーワード

ラムダ そして コンセプト

山形ブラケット ネストされたテンプレート宣言内。

それで書けるようになります

std::vector<std::vector<int>> a;

恐ろしいことの代わりに

std::vector<std::vector<int> > a;

for (auto x : collection) 反復構文はとてもクールだと思います...文字通り、多くのループ ヘッダーのサイズを 4 分の 1 以上削減します (反復子の型は多くの場合 ...冗長)!

また、ループ本体でイテレータを逆参照する必要がないことも意味します (従来のイテレータ ループでは、常に次を使用する必要があります) *i または i->... 要素の値を取得しますが、ここでは単に使用できます x)、場合によっては、コードの見栄えが大幅に向上します。

Unicode、マルチスレッド、ハッシュテーブル、スマート ポインター、正規表現。

ps:なぜ彼らは gr8 のコードレビューを行って、すべての boost および tr1 ライブラリを標準に受け入れて、すべての人にとって作業を容易にできないのか不思議です。その後、彼らが解決しなければならないのは、機能するオプションのガベージ コレクション モデルについて合意することだけです。

スマートポインター。ヒープに割り当てられたオブジェクトを明示的にメモリ管理する必要がないことは、本当に大きな違いを生みます。

明らかに、「自分が何をしているのかを知る」必要があることに変わりはありませんが、私の経験では、これまでに扱ったソフトウェアではメモリ関連のバグの数が少なくとも 1 桁減少しました。

構文はますます悪化しています。

可変引数テンプレートとラムダは優れていますが、残念ながら両方の構文はかなり不快です。

好き constexpr 特に可変個引数テンプレートとユーザー定義リテラルを併用すると、最終的にバイナリ リテラルやその他の多くの機能を使用できるようになります。

obj.bitmask |= 00001010B; 

デクタイプ :-) そして ラムダ

正規品!!並列プログラミング ライブラリもありますが、私はそれらすべての機能をまだ知りません。

生の文字列リテラル!Python のような文字列ブロックがすごいと思っていましたが、それは間違いでした。C++0x では、生の文字列リテラルはテキストの書式設定に非常に役立ちます。マークアップ言語はソースに直接記述できます。

今のところ、私が試した C++0x の多くは気に入っています。

  • nullptr
  • static_assert
  • ラムダ
  • 共有ptrとweak_ptr
  • unique_ptr
  • decltype と auto

試したことはありません <regexp>...すごいアイデアだと思いました...しかし、私はそれを見る時間さえ取りませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top