問題タブ [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.

0 投票する
1 に答える
191 参照

c++ - BitmaskType をゼロと比較する適切な方法は?

概念によればBitmaskType、実装では、次のステートメントが適切に形成されていることを保証する必要があります: (§17.5.2.1.3.4 に記載)

式 X & Y がゼロ以外の場合、値 Y がオブジェクト X に設定されます。

ここで、X と Y はコンセプト タイプBitmaskTypeです。

gcc 4.7 で次の単純なコード スニペットを試すと、テンプレート推定エラーが発生します。

エラー:

これはgccのバグですか、それともここで何か間違っているのですか? はいの場合、この種のチェックを実行する適切な方法は何ですか?

すでに gcc バグリストを確認しましたが、このトピックをカバーするものは見つかりませんでした。

0 投票する
1 に答える
296 参照

c++ - バートン・ナックマン vs std::enable_if

何が望ましいですか(もしあれば)?

バリアント A (バートン ナックマン):

バリアント B (std::enable_if):

0 投票する
3 に答える
375 参照

c++ - 平等の定義

C ++で「==」演算子をオーバーロードする場合、同等性が明示的に意味するものに関する標準的な定義、または「==」がどのように動作するかに関する一連のガイドラインはありますか?

私は現在、自分自身全体をメモリに保存しないクラスを持っています。基本的に、優先キューを使用して、内部のオブジェクトが使用されている頻度を決定し、オブジェクトがキューの最後からポップされると、メモリから削除されてディスクに書き込まれます。

したがって、問題は平等で発生します。これらのオブジェクトの2つが等しいとはどういう意味ですか。すべての点で同じオブジェクトAとBから始めることができるため、それらは同じデータをメモリにロードし、ディスク上に同じデータを持っています。しかし、AとBで一連の関数を呼び出した後、それらは異なる可能性があります。AとBはまだディスク上に同じデータを持っていますが、それらはメモリにロードされた異なるデータを持っています。それで、問題はA == B真か偽かを解決する必要があるかどうかです。

これがどのように機能するかを定義する一連のルールまたはガイドラインはありますか?それとも、これは、プログラムにとって何が最も理にかなっているのかを判断し、「==」が何をするのかを文書化するだけの状況ですか?

0 投票する
0 に答える
457 参照

c++ - C++11 で概念を実装する方法

C++11 言語とライブラリ機能を使用して厳密に実装されている概念はどこで確認できますか? すぐに使い始めるには、単純なライブラリを好みます。

0 投票する
2 に答える
400 参照

c++ - メンバー関数のチェック: C++11 機能を使用してコンパイル時のチェックを実装する

私は、C++11 には十分な静的チェック (コンパイル時間) があり、C++11 の概念チェック (削除) であるべきだった部分の大部分を実装できることを読みました。(削除された概念に関する最近の質問のコメントでこれを読みました... - その質問は建設的ではないためすぐに閉じられました)。

以下の C++03 コードは、クラス内のメンバー関数の存在のみをチェックします (テンプレート クラスが動作するクラス)。検索される 4 つのメンバー関数を次に示します。私は常に同じパターンを使用します。

  • 関数のプロトタイプの typedef を定義するための typedef
  • 型名 TExtension がそのようなメンバー関数を定義していない場合、または別のプロトタイプを持っている場合にコンパイルを中断する static_cast の呼び出し

コードは次のとおりです。

これは私のコードの一部でしたが、完全にC++03に基づいていました。これらの新しいC++ 11機能を使用して、喜んで書き直します...代わりにここで何を使用する必要がありますか?

0 投票する
1 に答える
302 参照

scala - Scala トレイトを使用した C++ 概念のモデリング

C++ の概念や Haskell の型クラスなどの Scala の特性を使用する例が、ペーパー«Type Classes as Objects and Implicits» にあります。私は Scala でInputIteratorコンセプトと関数のようなものを書こうとしています:find

特性を正しく理解しているかどうかはわかりません。それでも... InputIteratorScalaで書かれた特性があります(より正確には、find関数で使用されるメソッドを使用した単純化された類似物です):

EqualityComparable明らかです:

しかし、私たちは何をすべきfindでしょうか? 私はこのようなものを書きたいと思います:

しかし、エラー«illegaldependent method type»が発生します。そして、他の方法で抽象型を「抽出」する方法がわかりませんvalue_type。その結果、次のコードを取得しました。

では抽象型の代わりに型パラメータを使用VTしましたdef find[Iter, VT, V]

問題は、どうすればより良くできるかということです。value_typeまた、追加の型パラメーターなしで抽象型を使用することは可能VTですか?

0 投票する
3 に答える
17090 参照

c++ - 概念とテンプレート制約の違いは何ですか?

C++ の完全な概念の提案とテンプレートの制約 (たとえば、Dlang に表示される制約またはC++1y の新しい概念ライトの提案)のセマンティックの違いは何かを知りたいです。

テンプレートの制約よりも実行できる本格的な概念は何ですか?