問題タブ [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++ テンプレート型
テンプレート型のメンバー関数を呼び出す良い方法は何ですか? 以下のコードは、関数が定義されfoo()
ている型に対してのみコンパイルされますか?bla()
メソッドboost::enable_if
を持つ型に対してのみこの関数を定義するために使用できますか? bla()
はいの場合、それは良い考えですか?ここで使用する必要があるのは、おそらく「概念」(私はそれについて何も知りません) のアイデアだと思います。
c++ - コンセプトによってC++のコンパイルが遅くなるのはなぜですか?
どんな邪悪な魔法をしようとしているのか!?!
ハーブサッターとの質疑応答を聞いていましたが、コンセプトについての質問がありました。Herbは、コンパイラーの速度を低下させ(ソースは変更されないまま)、セクションはテンプレートのセクションよりも大幅に大きくなったと述べています。
なぜこれを行うのですか?コンセプトに関するドキュメントはどこにありますか?
c++ - すでにクラスとインターフェースがあったのに、なぜ概念 (ジェネリック プログラミング) が考案されたのでしょうか?
また、programmers.stackexchange.com で:
STL の概念が存在する必要があり、それらを「クラス」または「インターフェイス」と呼ぶのはばかげていることを理解しています。実際には、それらは文書化された (人間の) 概念にすぎず、当時は C++ コードに変換できませんでした。しかし、概念に対応するために言語を拡張する機会が与えられた場合、クラスの機能や導入されたインターフェースを単純に変更しなかったのはなぜでしょうか?
概念はインターフェイス (データのない 100% 抽象クラス)に非常に似ていませんか? それを見ると、インターフェースは公理のサポートを欠いているだけのように思えますが、公理をC++のインターフェースに導入できるかもしれません(概念を引き継ぐためにC++でインターフェースを仮想的に採用することを検討してください)、そうではありませんか?自動の概念でさえ、そのような C++ インターフェースに簡単に追加できると思います (自動インターフェースの LessThanComparable、誰ですか?)。
concept_mapは Adapter パターンに非常に似ていませんか? すべてのメソッドがインラインである場合、アダプタは基本的にコンパイル時以降存在しません。コンパイラは、インターフェイスへの呼び出しをインライン バージョンに置き換えるだけで、実行時にターゲット オブジェクトを直接呼び出します。
静的オブジェクト指向プログラミングと呼ばれるものについて聞いたことがあります。これは本質的に、汎用プログラミングでオブジェクト指向の概念を効果的に再利用することを意味し、実行オーバーヘッドを発生させることなく OOP のほとんどの機能を使用できるようにします。このアイデアがさらに検討されなかったのはなぜですか。
これが十分に明確であることを願っています。私がそうではないと思われる場合は、これを書き直すことができます。私に知らせて。
c++ - C++ Boost の概念の廃止に関する警告
このページの上部では、非推奨の API について警告しています。その場合、どこでその代替品を見つけることができますか?
c++ - コンパイル時に式が不正であることを確認するにはどうすればよいですか?
関数アプリケーションがコンパイラによって拒否されることを表明したいというアプリケーションの問題があります。SFINAEでこれを確認する方法はありますか?
std::transform
たとえば、あるconst
範囲が違法であることを検証したいとします。これが私がこれまでに持っているものです:
残念ながら、私の特性は合法と違法の両方の事件を拒否します。結果:
c++ - boost::multi_array の ConstMultiArrayConcept に NumDims テンプレート引数があるのはなぜですか?
を処理するoperator<<
特殊化を作成し、外側の配列とサブ配列の両方で機能するようにboost::multi_array
使用しました。しかし、なぜ概念にテンプレート引数があるConstMultiArrayConcept
のか 疑問に思っています。それは. inの唯一の用途は、スライスをテストするの再帰の深さの引数としてです。multi_array
std::size_t NumDims
multi_array
NumDims
ConstMultiArrayConcept
idgen_helper
multi_array
参考までに、概念
のヘッダーは次のとおりです。 http://www.boost.org/doc/libs/1_51_0/boost/multi_array/concept_checks.hpp
そして、これが私の過負荷ですoperator<<
この専門化は機能しますが、私の理解では何かが欠けているに違いありません。手がかりをいただければ幸いです。
c# - オブジェクト指向層
こんにちは、私は一学期の間 C++ で OOP をプログラミングしており、C# を始めたばかりです。レイヤーを互いに分離する方法と、何がどこで何をするのか、まだ完全には理解していません。私が理解していることから、これらの層があります:
ストレージ -> データ アクセス -> ビジネス ロジック -> コマンド プロセッサ -> ユーザー インターフェイス
今、私は各層の責任が何であるかを正確に理解できないようです..
データ アクセスには、追加、更新、削除、クエリなどのメソッドのみが含まれていることを理解しています。データ アクセスは、オブジェクトをパラメーターとして受け取り、それを処理するだけで、何を挿入するかは気にしません。ビジネス ロジックは、コマンド プロセッサがユーザー インターフェイスからデータを取得し、入力検証を行ったコマンド プロセッサから送信されるデータからオブジェクトを作成しますか?
また、クエリコマンドはデータを送り返す必要があるため、挿入コマンドとは大きく異なる方法など、さまざまなコマンドをどのように送受信しますか..
おそらくおわかりのように、私はかなり道に迷っており、このテーマに関する適切なチュートリアルを見つけるのに苦労しています.
ありがとう!
編集。
データ アクセス レイヤーのクエリ メソッドから始めようとしています。親タイプの汎用リストに格納する 3 つの子オブジェクトがあります。
さまざまなクエリ オプションがあります。そのうちの 1 つはタイプです。したがって、親リストを検索し、指定されたタイプの場合は各オブジェクトのデータを返す必要があります。親オブジェクトには上書きされた ToString() と、親の ToString() を呼び出してオブジェクトのすべてのデータを 1 つの文字列に取得する子があります。私はここでビジネスロジックの仕事をしていますか? また、自分のタイプに一致するオブジェクトのリストを取得し、ToString() を呼び出す foreach でそれをスローして反復しようとすると、親の ToString() だけが呼び出されます。
c++ - ブーストコンセプトチェックoperator()オーバーロード
少なくとも2つのオーバーロードが存在し、継承するかどうかを確認したいのですが、PrinterT::operator()(T*)
ここPrinterT::operator()(C*)
PrinterT
でstd::unary_function
使用する必要があるクラスの確認の概念は何ですか?
(私はC ++ 11を使用していません)
algorithm - ソートアルゴリズムの選択基準
入力に基づいてソートアルゴリズムを選択する方法を知りたいと思っていたので、最高の効率を得ることができました。
入力のサイズ、入力の配置方法(昇順/降順)、または使用されるデータ構造などに依存する必要がありますか...?