問題タブ [c++-concepts]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - c++0x の概念と c# の制約の違いは何ですか?
C++0x では、基本的に型の型を定義できる概念が導入されています。type に必要なプロパティを指定します。
C#では、" where " 句を使用してジェネリックの制約を指定できます。
それらの間に意味的な違いはありますか?
ありがとうございました。
c++ - C++0x には概念がなくなります。意見?これはあなたにどのように影響しますか?
2009 年 7 月にフランクフルトで開催された C++0x 会議で、C++0x から概念を削除することが決定されました。個人的にはがっかりしていますが、C++0x がないよりは実装可能な C++0x の方がいいと思います。後日追加されるとのことでした。
この決定/問題についてどう思いますか? それはあなたにどのように影響しますか?
c++ - C++0X の概念はなくなりました。他にどの機能を追加する必要がありますか?
聞いたことがあるかもしれませんが、C++ 標準委員会の前回の会議では、次の C++ 標準から概念を削除することが投票されました。もちろん、これは他の機能に影響を与え、標準が再び大きく開かれるように思われます。その場合、他にどの機能を削除 (または追加) する必要があると思いますか? また、その理由は何ですか?
リンク:
概念の削除-- Danny Kalev (概念を削除する決定について)
Simplifying the use of Concepts -- Bjarne Stroustrup (現在の概念の問題について)
The Long Pole Gets Longer -- Martin Tasker (概念を修正する必要がある場合の C++0x のスケジュールへの影響について)
C++0x の "Remove Concepts" 決定- Dobbs 博士の問題に関する Stroustrup
旅行レポート: コンセプトの終了、約 18 か月で最終的な ISO C++ ドラフト- Herb Sutter
コンセプトは C++0x アイランドから投票される - 現在のコンセプト仕様を擁護するジェレミー・シーク
フランクフルトで何が起きた?- C++Next の Doug Gregor (コンセプトの歴史と削除について)。
c++ - コンセプトはインターフェイスとどう違うのですか?
概念 (つまり、最近 C++0x 標準から削除されたもの) は、Java などの言語のインターフェイスとどう違うのですか?
c++ - 架空の、以前は C++0x の概念に関する質問
(プリアンブル:私は C++0x ゲームに遅れて従い、C++0x 標準からの概念の削除に関する最近の論争がきっかけで、それらについてもっと学ぶようになりました。私の質問はすべて完全に仮説 -- 概念が有効な C++ コードであるとしても、しばらくの間有効ではない限り -- 概念についてもっと学ぶことにまだ興味があります。特に、最近の決定の背後にあるメリットをより完全に理解するのにどのように役立つかを考えると、その後の論争)
C++0x (最近まで) が提案した概念に関する入門資料を読んだ後、いくつかの構文上の問題に頭を悩ませています。これ以上苦労することなく、ここに私の質問があります:
1) 特定の派生概念をサポートする型 (auto キーワードを介して暗黙的に、または concept_maps を介して明示的に) も、基本概念を個別にサポートする必要がありますか? 言い換えれば、概念を別の概念から導出する行為 (例: concept B<typename T> : A<T>
) には、(B, 内に) '見えない' 要求ステートメントが暗黙的に含まれていrequires A<T>;
ますか? 混乱は、概念に関するウィキペディアのページに次のように記載されていることから生じます。
クラス継承と同様に、派生概念の要件を満たす型は、基本概念の要件も満たします。
つまり、型は派生概念の要件を満たす必要があるだけであり、必ずしも基本概念の要件を満たす必要はないと言っているように思えますが、これは私には意味がありません。ウィキペディアが決定的な情報源ではないことは理解しています。上記の説明は言葉の選択が悪いだけですか?
2) タイプ名をリストする概念は「自動」にすることができますか? もしそうなら、コンパイラはこれらの型名をどのように自動的にマップしますか? そうでない場合、概念で「自動」を使用することが無効になる他の機会はありますか?
明確にするために、次の架空のコードを検討してください。
これらのクラスのいずれかが SomeType と一致しますか? それとも、型名を含む概念に concept_map が必要ですか?
3) 最後に、どの公理が定義できるのか理解に苦しむ。たとえば、次のような論理的に矛盾する公理を概念に定義させることはできますか?
それは何をしますか?それも有効ですか?
これは非常に長い一連の質問であることを理解しています。事前に感謝します。
c++ - コンセプトとは何ですか?
C ++ 0xにはもう概念がないことについて、このすべての新しい(/。で)聞いたことがありますが、それらが何であるかわかりませんか?誰かが私に説明できますか?
c++ - C ++ 0xコンセプトとブーストコンセプトチェックライブラリ(BCCL)の違いは何ですか?
ConceptsはC++0x標準を作成しませんでしたが、BoostはBoost Concept Check Library(BCCL)を提供します。BCCLは、C++0x標準に含まれることを意図したすべてを網羅しているわけではないと思います。BCCLと提案されたC++0xソリューションの違いは何ですか?
c++ - C++ コードで特定の概念を要求する方法は?
引数が の特定の概念であることを要求および確認するにはどうすればよいC++
ですか?
たとえばrandom_shuffle
、ヘッダー内の関数ではalgorithm
、引数がRandomAccessIteratorsである必要があります。
私は__glibcxx_function_requires
自分のコードでこれらなどを使用できないと思いますか? それらはどのように機能しますか?コードでそのようなことをチェックしますか?
c++ - C ++でのコンセプトチェックの変更?
社内のあるプロジェクトから別のプロジェクトにコードを移植しているときに、コンパイルされない一般的な「sets_intersect」関数に遭遇しました。
私はこの「概念」の概念に慣れていないので(駄洒落で申し訳ありません)、c ++標準ライブラリを少し調べてグーグルで調べたところ、これらの__glibcpp_function_requires
マクロがに変更されたことがわかります__glibcxx_function_requires
。これでコンパイラエラーが修正されました。ただし、これは私にとって初めてのことなので、このコードが私のために何をしているかに興味があり、ライブラリ内のドキュメントを見つけたり、コードを解読したりするのに問題があります。
これらのマクロのポイントは、コンパイラがテンプレート化された関数を展開すると、コンパイル時に型チェックを実行して、使用されているコンテナがこのアルゴリズムと互換性があるかどうかを確認することだと思います。つまり、最初の呼び出しは、に_InputIter1
準拠するチェックであると想定してい_InputIteratorConcept
ます。私は混乱しているだけですか、それとも正しい方向に進んでいますか?また、これらのマクロの名前がc ++標準ライブラリで変更されたのはなぜですか?
scala - Scala トレイトと C++ の概念の違い
Scala traits Haskell type classとC++0x Conceptsの違いは何ですか?
以下の例のように、オブザーバーが抽象メンバー receiveUpdate を宣言する場合、オブザーバーは実際には「匿名」型または構造型です。