最近のC ++はより一般的になっていますか?[閉まっている]


132

6〜7年前に初めてC ++を学んだとき、私が学んだのは基本的に「クラスを伴うC」でした。std::vector間違いなく上級者向けのトピックであり、本当にやりたいことあれば学ぶことができます。そして、メモリを管理するためにデストラクタを利用できると誰も私に言っていないことは確かです。今日、どこを見ても、RAIIとSFINAE、STLとBoost、さらにはモダンC ++が見られます。言語を使い始めたばかりの人でも、ほぼ1日目からこれらの概念を教えられているようです。

私の質問は、これは単に「最高」、つまりここやSOや、初心者を惹きつける傾向がある他のプログラミングサイト(gamedev.net)でしか見られないため、またはこれが実際に全体としてのC ++コミュニティ?

最新のC ++は本当にデフォルトになっていますか?専門家が書くいくつかの派手なものではなく、それは「C ++のあり方」になっているのでしょうか?それとも、「クラスを使用したC」を学習しstd::vector、を使用する代わりに独自の動的配列を記述し、トップレベルのコードから手動でnew / deleteを呼び出してメモリ管理を行う何千人もの人々を見ることができないのでしょうか?

私が信じたいのは、C ++コミュニティ全体が基本的に数年で大きく進化したかどうかです。あなたの経験と印象は何ですか?

(免責事項:C ++に精通していない人は、C ++が他の言語と比較して人気を得ているかどうかを尋ねるタイトルを誤って解釈する可能性があります。それは私の質問ではありません。「モダンC ++」は、本にちなんで名付けられたC ++内の方言またはプログラミングスタイルの一般的な名前です現代のC ++デザイン:一般的なプログラミングとデザインパターンの適用 "と私はこれだけと"古いC ++ "に興味があります。したがって、C ++の時代が過ぎたことを私に伝える必要はありません。みんなPythonを使用する必要があります;))


2
残念ながら、C ++コミュニティ全体が標準ライブラリの使用方法を認識し、同様の方法論を使用してコードを実装することはもちろんのこと、今後のC ++ 0x追加とともにブーストする方法を認識できるほど十分に高度になるまでにはしばらくかかると思います。しかし、C ++ 0xはC ++の人気を高めるための大きな希望をもたらすと思います。毎日の構文上の多くの不便さが改善されました。私はいつもこれらのことをささいなことだと考えてきましたが、言語を見る外部の人々にとって、これは一般的な不満の原因です。
stinky472 2010年

15
私の場合、RAIIや例外の安全性(必ずしもAlexandrescuの本を参照しているとは限りません)などの最新のC ++技術や、イテレーターや汎用アルゴリズムなどの最も基本的な概念さえ理解している専門家に出会うたびに、理解できない10人が見つかります。少なくとも専門家に関しては、彼らの多くは期限が過ぎて何もわかっていないため、自称C ++の専門家でさえ多くのことを学ぶことができます。私もC ++ 0xの1つになりつつあると思います。そのために多くのことを学び、調整する必要があり、期限を守る必要があります。
stinky472 2010年

回答:


76

ここに私が物事が進化したと思う方法があります。

C ++プログラマーの第1世代はCプログラマーで、実際にはC ++をクラスのCとして使用していました。さらに、STLはまだ整っていないため、C ++は本質的にそうでした。

STLが発表されたとき、それは進歩しましたが、ほとんどの人は本を書き、カリキュラムをまとめ、クラスを教える人が最初にCを学び、次に余分なC ++のことを学んだので、第2世代はその観点から学びました。別の回答が指摘したように、通常のforループを作成することに慣れている場合、使用を変更しstd::for_eachても、「モダン」な方法でやっているという温かみのあるあいまいな感覚を除いて、あまり効果がありません。

現在、C ++の全体を使用しており、Koenig&MooのAccelerated C ++やStroustrupの新しい教科書など、その観点から指導を受けているインストラクターとブックライターがいます。そのためchar*、そのときは学習しませんstd::strings

これは、「レガシー」メソッドが置き換えられるまでにかかる時間、特に有効性の実績がある場合に興味深いレッスンです。


13
はい。Cコーダーの巨大なインストールベースのため、C ++をCと高度に下位互換にすることは非常に賢明でした。DOSとの下位互換性を常に維持するというMSの成功した戦略と非常によく似ています。(彼らが行った苦痛な長さについてはレイモンド・チェンの優れたブログを参照してください...)
j_random_hacker

2
おっと、少し接線になりました... Cから切り替えた(ただしCスタイルの考え方を維持した)人々と「ファーストテイスト"はSTL後のC ++でした。
j_random_hacker 2009

57

はいぜったいに。あなたがこの「モダンC ++」スタイルでC ++をプログラミングしていないのであれば、C ++を使用しても意味がありません。Cを使用するのもよいでしょう。私の考えでは、「モダンC ++」がC ++をプログラミングする唯一の方法である必要があります。C++を使用し、この「モダン」な方法でプログラミングしたすべての人が私に同意すると思います。実際、auto_ptrやptr_vectorなどのことを知らないC ++プログラマーの話を聞くと、いつも完全にショックを受けます。私の知る限りでは、これらのアイデアはC ++の基本的で基本的なものなので、他の方法では想像できませんでした。


4
+1; 「モダンc ++」スタイルは、それを行うのが自然な方法であるため、早い段階で採用しました(クラスでCを考えていない場合)。
Adam Hawes、

21
「Cを使うだけ?」Cはいまいましい強力です。
クラークゲーベル、2010

4
ロボットは確かにC ++でプログラミングされず、十分に愚かではなく、それをコンパイルしようとするとフリーズします。
マットジョイナー

6
@ClarkGaebelまあ、Cが強力であれば、C ++もCからの継承によって問題なく継承されます:)
legends2k

4
@rxantosさん、アセンブリの出力、タイマー、RAMモニターの表示など、パフォーマンスを評価するための豊富なオプションがないとおっしゃっています。C ++はCとその点で違いはありません。疑問がある場合は、プロファイルを作成してください。それ以外のものはただの噂です。
underscore_d

25

Windows 3.1の時代には、Cが標準でした。C ++が開発者市場に登場し、後にANSI標準になったとき、それは新しいホットさでした。これは、OOPの頭字語と、ポリモーフィズムを使用したいくつかの基本的なデザインパターンを普及させました。

今では、C#/。NETのような、障壁の低い管理対象プラットフォームの採用が拡大しているため、C ++を使用する理由はあまりありません。開発者の多くは選択肢を持っているので、正直に言いましょう。C++は初心者のために学ぶクマです。C#を使用すると、それで実行できます。

それでも、C ++と熱心なC ++エバンジェリストがアートの実践を続ける必要があるプラットフォームだけが残ります。これは、「モダンC ++」と見なされる抽象化のすべての層を必要とし、必要とするコミュニティです。

だから、はい、私はあなたがそれを言うように、「現代のC ++」がより普及していると信じています。とはいえ、それは以前にそれを使用したのとは異なる聴衆で流行しています。


みんな来て、この答えはいくつかの良い点になります。C ++は完璧ではありません。Bjarne氏自身は、C ++は大きすぎて習得が難しいと苦情を言っています。なぜモダンC ++が次第に登場したのかについては意見が異なりますが、私見では、このような大きな言語が「ランブルフォワード」するのにこれほど時間がかかります。
j_random_hacker 2009

4
つまり、より平均的な開発者がC#などに向かう一方で、ハードコアのほうがC ++にこだわっているということですか。(C#/。NETの賢い人が実際にいるわけではありませんが、それほど賢くない人はたくさんいます。)ある程度の意味があります。
David Thornley、

3
妥当なポイントだと思います。もちろん、それはすべての人に当てはまるわけではありませんが、多くの場合、私は同意します。
jalf

3
使用例:Windowsクライアントに自分のデータベースでCRUDを実行させたい。C#/。NETまたはC ++ / MFCを使用しますか?Webアプリが必要です... C#/ ASP.NETまたはC ++ / ISAPIを使用しますか?DirectX C#/。NETまたはC ++ / MFC / WTLを使用した単純な "Nybbles"クローンが必要ですか?Assembly09で優勝したデモが欲しい...間違いなくC ++(vs. C#)。
スポールソン2009

8
それが抽象化の層の問題なのか、それとも型の硬さの問題なのかはわかりません。テンプレートを介して利用できる抽象化の種類がJavaやC#で利用できなかっただけだと思う​​ので、それらを気に入った、または必要とした人はC ++を使い続けました。
Kragen Javier Sitaker、2009年

16

私はSTLの操作方法を学び、1日目からRAIIと優れたC ++プログラミングプラクティスについて多くのことを聞いたこれらの人の1人です。 )独自のものをロールアップする代わりにSTLツールの使用に焦点を当て、効果的な(または「モダン」)プログラミングのための多くの「ルール」も提供します。

しかし、友人と話していると、「モダンC ++」ではなく、「C with Classes」を使用している会社もあることに気付きました。おそらく、「モダンC ++」の作者とユーザーによって提案された文化がいつかは普及するでしょう:)


私が働いているところでは、クラスでCを使用しています。おそらく、しばらくそこにいた古いタイマーがたくさんあるからでしょう。彼らはブーストは言うまでもなく、STLにも非常に警戒しているようです。
aneccodeal 2009年

12

最初は悪い経験をしたと思います。

Scott Meyers Effective C ++の本を手に入れる必要があります。私は1999年に怒ってC ++を始めました。コードをチェックインできるようになる前に、チームのリーダーが私に座って「Effective C ++」と「Effective C ++」を読んでもらいました。

彼のアドバイスのほとんどは、の行にある「このは使用しないでください機能を、しかし、あなたがしなければならない場合、キープこれを念頭に置いて」

彼のアドバイスに従えば、良いまたは「モダン」なC ++を書くでしょう。

彼は現在STLについての本も持っていますが、私はまだ読んでいません。


これは単なる出発点でした。今日、私はSTL、ブースト、RAII、その他すべてにとても満足しています。私の最初の経験がどれほど一般的であるかを単に疑問に思いました。
jalf

9

私のC ++の仕事では、現代の機能がますます使用されるようになり、電話でのスクリーニングやインタビューで、より多くの人が私にそれらについて尋ねました。私の知る限り、彼らは追いついている。

私はもともとC ++をClasses with Cのようなものとして学びました。言語はそれをはるかに上回っていましたが、私が読んだ本と一緒に働いた人々は「古いC ++」に固執していました。RAIIは、自動的に行うのではなく、人々が考えていることです。例外的な安全性の問題に関する初期の記事をいくつか読んだことを覚えています。

指摘したように、今は新しい本があります。古いものの多くはまだ関連性がありますが、明らかに悪いアイデアが悪い理由を説明することで一杯になりつつあるようです。(同様に、今の常識となっているため、現代の読者は、フロイトの無意識の考えがいかに革新的であったかを理解することは困難です。)

Stroustrupが教科書「Programming:Principles and Practice Using C ++」を発表しました。Stroustrup'sの本から良いものを学ぶのにまだ失敗していないが、最初のいくつかの章を過ぎていないので、それを購入しました。これまでのところ、私が言えることは、彼がどのように始めているかを承認することだけです。それは、C ++の使用方法についての少なくとも良い入門書です。


STLの最初のバージョンでさえ、例外セーフではありませんでした。
Kragen Javier Sitaker、2009年

2
その当時、誰もが例外セーフなコードを書く方法を本当に知りませんでした。これは、規格の公開後の数年間で解決されました。C ++レポートの記事のいくつかを覚えています。
David Thornley、

7

私が現在関わっているプロジェクトに取り組んでいる間、かなりの期間(今から10年以上)にわたって進化したC ++コードがたくさんあります。あなたが話す進化はそこにはっきりと見えます:古いコードはしばしば「クラスchar*を伴うC 」-生のポインタ、文字列、そして関連するC関数、配列の使用などです。新しいコードはATLスマートポインターなどを使用してリソースを管理しますが、ほとんどの場合、手作業でコーディングしたループに固執しており、イテレーターはめったにありません。そして最新のものはSTLコンテナ、アルゴリズム、shared_ptr(ハンドルなどを管理するためのカスタム削除機能を含む)、非常に一般化された関数およびクラステンプレートなど。最近のコードレビューでは、手動で有効期間を管理するカプセル化されていない生のポインターなど、最も伝統的な「クラス付きC」コーディング手法は非常に嫌われています。これから判断すると、あなたの観察は正確であるようです。

最新の開発は、C ++ 0xラムダの流行であるようです。これは、すべてのコードをインラインで使用できるようになったため、手動でコーディングしたループよりも標準アルゴリズムを使用することを優先してバランスを傾けるというプラス面がありますアルゴリズムも。


6

私はstd :: vectorが最近「モダン」と見なされるとは言いません。それは本当に基本的です。

一般的に、私の印象は、人々は最近のC ++スタイルである程度の経験を積んでいて、少し落ち着いているということです。簡単な例を挙げれば、STL for_eachは興味深いものでしたが、実際には、プレーンなCループにひどい値を追加することはありません。デバッグが難しく、時には最高のパフォーマンスが得られません。また、現在のSTLでの関数型プログラミングの構造は、特にMLなどの実際の関数型言語の経験がある場合は特に、非常に扱いにくいものになります。


1
なぜベクトルは現代のものとはみなされないのですか?それは基本的なものですが、多くのユースケースではまだ最先端です。でも、ベーシックなものがモダンではないとは思いません。どちらかと言えば、逆です。しかし、私はあなたの2番目の段落に同意すると思います:)
Johannes Schaub-litb

4
しかし、これは、一部のpplが基本的にすべてに対してfor_eachやフレンドを使用しようとするためだと思います。単純なforループがより簡潔になるような場合でも、2行のループを最大10行に膨らませます。C ++ 1xでラムダが利用できるようになると、for_eachやフレンズを使用する人が
増えると思い

7
基本的なベクトルがまさにポイントです。それは常に基本的なものではありませんでした。かつて、それは非常に複雑(TEMPLATESを使用)で非効率(生の配列ではない)と一般的に見なされていました。専門家が説教するかもしれない何かが、多くの人々は単に信用しませんでした。
jalf

2
std :: for_eachがあなたが言うために必要なものであることはめったにないので... std :: transform?アルゴリズムを使用すると、非常に一般的なバグを1つ取り除くことができます。不適切なループ状態です。
エドゥアールA.

vector <bool>は確かに基本的なものではありません...
Kugel

6

私の経験(スペイン大学)では、残念ながら、言語自体を考慮しないことが標準です。彼らはプログラミングを教えるために最も簡単な言語(つまりJava)を使用します。なぜなら、それは教師と生徒にとっては容易であるはずなので、OSクラスなどにCを使用するからです。

C ++は、Cにクラスを提供するために、ごくわずかに導入されています(とにかくどのコースでも)。彼らはブーストやSTLにさえ入りません。C ++のすべての特性と考え方に追いつくことは、教師と生徒の両方にとってコストがかかると思います。ここでC ++プログラマーの何人が、すべてのBoostライブラリーを使用して、それらを使用してより良いソリューションを提供したり、設計したりできるのかを知っていますか?すべての新しいライブラリとイディオムに遅れずについていくことに関心を持つ必要があります。

ただし、前述したように、一般的なプログラミング(特にプログラミング言語)はそれほど真剣に受け止められていないようです。仕事を始めるときは一時的な割り当てであるように思われ、その後は、プログラムの進め方を忘れてしまいます。エンタープライズツリー。ここの多くの企業、そして大学自体は、プログラミングはだれでも行うことができると感じています。

この哲学に従えば、私が知っているほとんどの人にとって、C ++は常に「クラス付きC」になります。

よろしく、


そのほとんどはコンピュータサイエンスで非常に一般的であり、全体として、それは悪いことではないと思います。(つまり、言語に焦点を合わせていません。教えられている言語は明らかに適切に教えられるべきです)。
jalf

+1:「(言語に焦点を合わせていない、つまりaREが教えた言語は明らかに適切に教えられるべきである)」
Jared Updike

6

私の経験では、ソフトウェア製品/プロジェクトの年齢に大きく依存します。私が知っているほとんどの新しいプロジェクトは、最新のC ++(RAII、STL、Boost)を使用しています。ただし、10年以上前のC ++プロジェクトは数多くあり、最新のC ++は見当たりません。

また、最も人気のあるSTL実装のいくつかは、おそらく5年前(MSVC <7.0およびGNU <3.00)までかなり壊れていたことにも留意してください。


4

私が遭遇した最大の障壁は、特にクロスプラットフォームプロジェクトでのツールチェーンサポートです。数年前までは、「xプラットフォームではコンパイラーが機能していないため、STLportが機能する必要がある」というビルドノートがよく見られました。今でも、BOOSTの異なるバージョンに関連付けられた複数のサードパーティの依存関係を使用しようとする人々の問題を目にしています。これによりリンクが不可能になります。つまり、戻ってdepを最初から再構築する必要があります。

ほぼすべての人がMSVC ++ 6の使用をやめたので、STLportの混乱は私たちの背後にあります。しかし、TR1が登場するとすぐに、「どの環境のどのバージョンがそれをサポートし、正しく機能させるか」に戻り、これもまた採用を遅らせます。

私は1992年にC(C ++ではなく)で始まったプロジェクトに取り組んでいます。レガシーコードベース全体に最新のプラクティスを展開することは不可能でしょう。同様に、C ++言語の最先端に非常に近い別のプロジェクトに取り組んでいます。


3

私が参加して聞いた多くのチームは、「例外を使用していますか?」質問。これは、「最新のC ++を使用していますか?」のコードです。

例外を使用しないと、言語とそのライブラリのすべての機能を使用できなくなります。

しかし、多くの古いコードベースは例外がなく、例外を予期しないコードベースや、それらの使用方法を知らないチームに例外をかけるのは難しいと認識されているため、そのような場合の答えはしばしば「いいえ」。

私の経験では、現代のC ++には、それについて推進するために、チームでそれについて情熱を持っており、それ以上のものを見通すことができない人が必要です。また、従来のコードのようになりたいという人々の反対も克服する必要があります。

古いC ++コードベースがすぐになくなるとは思いませんが、世界にはこれらの情熱的な人々が5年前よりも多くいると思います。彼らは5年前に直面したのと同じ困難な戦いに直面しているが、彼らは親族の精神を見つける可能性が高い。


3

このような質問に答える前に、「モダン」とは何かについて同意する必要があります。「モダン」は明確に定義されていない言葉であり、人々によって異なることを意味するため、これは起こりそうにありません。Alexandrescuの本(Modern C ++ Design)のタイトルも、主にC ++の特定の分野であるテンプレートメタプログラミングに関する本ですが、決して唯一のものではないため、実際には役に立ちません。

私にとっては、「モダンC ++」!=「テンプレートメタプログラミング」。Cの上にあるC ++の機能は次のカテゴリに分類されます。

  • クラス(コンストラクタ、デストラクタ、RAII、動的キャスト、RTTI)
  • 例外
  • 参考文献
  • 標準ライブラリ(STL)のデータ構造とアルゴリズム
  • iostream
  • シンプルなクラスと関数のテンプレート
  • テンプレートのメタプログラミング

これらはすべて、ほぼ10年以上前から使用されているため、特にモダンなものはありません。これらの機能のほとんどは便利であり、多くのユースケースでストレートCよりも生産性を高めることができます。優れたプログラマーは、適切なサイズのプロジェクトでそれらをすべて使用する必要がありますが、これらの1つは他のものとは異なります。

テンプレートメタプログラミング。

テンプレートのメタプログラミングへの短い答えは、ノーと言うだけです。残念ながら一部の人々にとっては、本のせいで「モダンC ++プログラミング」の同義語ですが、結局は解決するよりも多くの問題を引き起こします。C ++がリフレクションなどのより優れた汎用プログラミングメカニズムを開発しない限り、C ++は汎用プログラミングには適しておらず、Pythonなどの高レベル言語はこれらのユースケースに適しています。それと他の多くの理由については、C ++ FQAを参照してください


6
IMHOテンプレートメタプログラミングは、アプリケーションプログラミングにはほとんど必要ありません。これは、読みやすさと理解しにくいバグを犠牲にして、おそらく不必要なレベルの一般性を提供するためだけに機能します。しかし、OTOHは、追加の一般性が役立ち、(醜く、トリッキーで、混乱する)メカニズムが見えないようにできるライブラリ(la Boost)を構築するときに、エキスパートにとって非常に役立ちます。
j_random_hacker

3
特にライブラリで適度に行うと、テンプレートメタプログラミングを上品に使用できるという点であなたは正しいです。しかし、私は人々がテンプレートのメタプログラミングの道を行き過ぎることを頻繁に目にし、その結果、彼らのプログラムは苦しんでいます。私はメタプログラミングに反対しているわけではありません。実際、私はそれを強く支持しています。それは、C ++の機能が非常に粗雑であるということだけです。
アントンI.シポス

2

C ++の学習に最適な本。Koenig&Mooの "Accelerated C ++"は、あなたが現代のC ++と表現していることを教えているので、最近のほとんどの人がそれを使用していると思います。(私の場合は80年代半ば以降)かなりの間C ++を使用している私たちにとって、最新のC ++は、独自の配列、文字列、ハッシュテーブル(繰り返しの吐き気)を作成するという面倒なタスクからの大きな救済です。


1
壊滅させるつもりはありませんが、私はこの勧告に基づいて本を購入しました。見なければならない!
Andrew Weir

2

私は確かにC ++ジョブを見てきましたが、ジョブの説明では「モダン」ライブラリがますます使用されています。MFCは「古いスタイル」のC ++ライブラリであり、あまり使用されていません。


1

1990年代後半の言語の標準化は最初のステップでした。これにより、コンパイラメーカーは「標準」機能のセットに焦点を合わせることができ、言語は標準化プロセスを通じて現れた粗いエッジの一部を修正できました。

これにより、特定のコンパイラ実装によって提供される機能ではなく、言語の標準機能に基づくフレームワークの開発が可能になりました。Boostライブラリはこの点で特に重要です。また、これにより、新しい開発が以前の作業に基づいているため、より複雑な問題の解決策が可能になります。

ここでの注目すべき変更は、以前のフレームワークが基本クラスと派生クラス(ランタイム機能)の概念に基づいていた方法です。しかし、現在のほとんどの高度な機能は、多くの場合、「再帰的」テンプレート(コンパイル時機能)に大きく基づいています。

STLには長所と短所がありますが、機能するシンプルなSTLが必要な場合は、STLの開始に役立つものが確実にあります。ホイールを再発明しても意味がありません(教訓的な理由がない限り)。

コンピュータハードウェアも1990年代から飛躍的に進歩し、メモリとCPUはコンパイラの制約ではなくなりました。したがって、本からの理論的な最適化のほとんどが可能になりました。

言語の次のステップは、マルチコアプログラミングのサポートです。これは0x標準の取り組みの一部です。


1

はいといいえ。確かに新しいプロジェクトではますます人気があります。しかし、他の人が言及していない、政治的ではなく、実用的な採用にはまだ障壁があります。Modern C ++に見られる機能を適切にサポートしていない古代のコンパイラのABIを使用する商用C ++ライブラリはたくさんあり、多くの企業がこれらのライブラリに依存しています。たとえば、Solaris上のSun StudioはSTLportを使用しないとBoostで動作しませんが、使用するサードパーティの商用ライブラリには、SunのバージョンのSTLが必要です。GCC 2.95とRedhat Enterprise Linuxでも同じことが言えます。


-3

それは、c ++をより安定させるために少しの労力が費やされていることを理解しています。警告システムは整っていますが、あまり進化していません。10年前よりも、自分の足で撃つほうが簡単です。理由はわかりませんが、c ++は今でも私のお気に入りの言語です。:)


C ++の安定化に費やされている「少しの努力」について、そして「10年前よりも自分の足で撃つほうが簡単だ」と主張する前に、このスレッドの本をいくつか読むことをお勧めします。
Patrick Niedzielski、2012年

確かに、std-libraryはメモリ割り当てと文字列操作に対してある程度の安定性を提供します。残念ながら内部的にはこのような奇妙なコーディング規約を使用しており、エイリアンや何かによって書かれたものだと思うでしょう。:)
AareP

2
標準ライブラリは仕様なので、奇妙な内部コーディング規則を使用しているコンパイラベンダーを非難します。さらに、奇妙なコーディング規約= / =不安定であるか、足元で自分を撃つのは簡単です。それらのコーディング規則のほとんど(少なくともMSVCライブラリについて、そしておそらく他の言語についても話す)は、まったく干渉しないように設計されているので、あなたは愚かなことをすることができ、ライブラリは気にする必要がありません。C ++仕様外でコーディングする場合、それは別のことです。
Patrick Niedzielski、2012

典型的なSTL実装(特に、特定のコンパイラにバンドルされている場合)は、標準C ++を使用してそれ自体を実装する必要がないことに注意してください。規格によって約束された保証をコードに提供するために、実装固有の知識をその内部で非常にうまく利用できます。ただし、独自のコードは、標準が保証するものにのみ固執する必要があります。特定のC ++またはSTL実装を調べることによって標準保証を学ぶことはできません
Tanz87 2017

この回答は10年前に書かれました。当時、c ++をより安定させるためにどれだけの努力が払われているかは驚異的でした。これが、c ++ 0xがc ++ 11としてリリースされるまでに非常に長い時間がかかった主な理由の1つでした。
デビッドハメン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.