問題タブ [c++17]
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++ でコルーチンをどのように実装しますか?
ポータブルにできるとは思えませんが、解決策はありますか? 代替スタックを作成し、関数エントリで SP、BP、および IP をリセットし、IP を保存して SP + BP を復元することで実行できると思います。デストラクタと例外の安全性は難しいように見えますが、解決可能です。
それは行われましたか?無理ですか?
c++ - C ++ 0xにyieldが追加されなかったのはなぜですか?
編集、私がこの質問をした11年後:私は質問したことで立証されたと感じています!C++20はついに十分に近い何かをしました。
元の質問は以下のとおりです。
-
私は多くのPythonプログラムでyieldを使用してきましたが、多くの場合、コードが実際にクリアされます。私はそれについてブログを書きました、そしてそれは私のサイトの人気のあるページの1つです。
C#はyieldも提供します。これは、呼び出し側の状態保持を介して実装され、状態、関数のローカル変数などを保持する自動生成されたクラスを介して実行されます。
私は現在、C++0xとその追加について読んでいます。また、C ++ 0xでのラムダの実装について読んでいると、ラムダコードを格納するoperator()を備えた、自動生成されたクラスを介して行われたことがわかりました。私の頭の中に形成された自然な質問:彼らはラムダのためにそれをしました、なぜ彼らは「収量」のサポートのためにもそれを考慮しなかったのですか?
確かに彼らはコルーチンの価値を見ることができます...だから私は彼らがマクロベースの実装(Simon Tathamのような)を適切な代替物として考えていると推測することができるだけです。ただし、多くの理由でそうではありません。呼び出し先が保持された状態、再入可能でない、マクロベース(それだけで十分な理由)などです。
編集: yield
ガベージコレクション、スレッド、またはファイバーに依存しません。Simonの記事を読んで、次のような単純な変換を行うコンパイラについて話していることがわかります。
の中へ:
ガベージコレクション?いいえ、スレッドですか?いいえ。繊維?いいえ。単純な変換ですか?間違いなく、はい。
c++ - Aggregate と POD とは何ですか? また、それらがどのように/なぜ特別なのですか?
このFAQはアグリゲートと POD に関するもので、次の内容をカバーしています。
- 集合体とは?
- POD (Plain Old Data)とは何ですか?
- それらはどのように関連していますか?
- どのように、そしてなぜ彼らは特別なのですか?
- C++11 の変更点は?
c++ - C++ でディレクトリを作成する方法
system() を使用せずに Windows API でディレクトリを作成できる小さなコードを見つけました。唯一の問題は、サブディレクトリにディレクトリを作成できないことです。例えば
C で random という名前のフォルダーを作成します。
しかし、私がそうするなら
これは、Users の下のフォルダ morons ではなく、Usersmorons という名前の C che フォルダに作成します。何か提案はありますか?
c++ - 厳密に型指定された列挙によるテンプレート引数推定
通常の (弱い) 列挙がある場合、その列挙値を非型テンプレート パラメーターとして使用できます。次のようにします。
そしてそれを次のように呼び出します:magic<Cat>(t)
私が見る限り、厳密に型指定された列挙型があり、列挙型をハードコーディングしたくない場合は、次のようになります。
そして今、私は書く必要があります: magic<Animal, Animal::Cat>(t)
、これは冗長に思えます。
列挙型クラスと値の両方を入力しないようにする方法はありますか?
c++ - 概念のキャストに相当するものは何ですか?
aが と のclass A
2 つの概念を満たすConceptA
としConceptB
ます。foo
2 つの概念のために関数をオーバーロードします。
注: この例では、 N3701、 §5の一部として提案されている「Terse Notation」構文を使用しています。
concept_cast
ユーザーがオーバーロードを選択できるようなものはありますか?
例:
ConceptA
T にはメンバー関数が必要であり、bar()
ConceptB
T にはメンバー関数が必要baz()
であり、とメンバー関数class A
の両方があるとします。bar()
baz()
static_cast
明らかにあいまいですが、通常のオーバーロードのように明示的に選択する方法はありますか?
更新:受け入れられた回答は2年以上前のものです。c++17 の更新はありますか?
c++ - string_view とは何ですか?
string_view
C++ Library Fundamentals TS ( N3921 ) 内で提案された機能であり、C++17 に追加されました。
私が理解している限りでは、文字列として表示可能なものを格納できる任意のタイプのコンテナのビューである、ある種の文字列「概念」を表すタイプです。
- これは正しいですか ?
- 正規の
const std::string&
パラメータ タイプは になりstring_view
ますか? string_view
他に考慮すべき重要な点はありますか?
c++ - C ++ 1zでのコンパイル時のリフレクション?
C++ 標準化委員会には、C++1z 以降でコンパイル時の反映を提供するための研究グループがあります。正確な目的と、期待されるツールがどれほど強力かを知りたいですか?
たとえば、これらのツールを使用して関数やクラスに名前を付けることができますか?
これほど強力でない場合、典型的な使用例は何ですか?
c++ - C++1z の範囲のステータス?
C++ 委員会には、範囲に関する研究グループがあります。
しかし、私はこのスタディ グループの歴史をたどっておらず、C++1z でどのような配信が予想されるかはわかりません (さらに、boost.range を使用していないため、既存のプラクティスを明確に把握していません)。ありますか:
最初/最後のイテレータのペアとしての範囲?
範囲に対するユニオンおよびその他のセット操作 (例
[v.begin()+5, v.begin()+7[ U [v.begin()+10, v.begin()+15[ U [v.begin()+21, v.begin()+42[
: )。反復子フィルター (条件が満たされる for_each を実行するため)?
他のもの?