問題タブ [c++14]
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++14 で再開可能な関数はどのようなコンテキストで実行されますか?
C++14 の提案の 1 つは、現在 C# で async/await メカニズムを使用して利用できるものを C++ に提供する再開可能関数です。基本的な考え方は、非同期操作が完了するのを待っている間、関数を一時停止できるというものです。非同期操作が完了すると、関数は一時停止された場所から再開できます。これは、再開可能な関数が呼び出されたスレッドがブロックされないように、ノンブロッキングの方法で行われます。
関数がどのコンテキスト (スレッド) で再開されるかは、私には明らかではありません。関数が一時停止されたスレッドによって再開されますか (これは、私が理解しているように C# で行われる方法です)、それとも別のスレッドを使用しますか?
一時停止したスレッドによって再開された場合、スレッドを特別な状態にする必要がありますか、それともスケジューラがこれを処理しますか?
c++ - SFINAE: static_assert と std::enable_if の比較
次の (推奨! ) 構文に欠点はありますか?
SFINAE の代わりに (松葉杖のように見えます):
さらに悪いことに:
auto
結果型の推論の使用を禁止します。
c++ - g++/libstdc++ での std::optional の実装状況は?
2014 年頃に一般公開される C++ ライブラリに取り組んでいるため、現在、設計上の選択を迫られています。C++14 でリリースされる非常に便利なツールの 1 つがstd::optional
. g++/libstdc++
を使用することが期待できるのバージョンを知りたい-std=c++1y
です。
c++ - メインのリターンタイプの自動控除は機能しますか?
C++1y (C++14) の main 関数に対して次のことを実行できますか?
int
では、明示的に使用する必要がない場合でも、戻り値の型は自動的に になりreturn 0;
ますか?
c++ - 関数のオーバーロードに auto を使用できないのはなぜですか?
使用はオーバーロードの高く評価されている方法の 1 つであることは理解していますtemplates
が、なぜauto
関数パラメーターの型推定に使用できないので、関数のオーバーロードを支援するのか疑問に思っていました。
N3690
7.6.1.4/3 で、auto を使用してラムダ式を汎用にすることができると述べており、この例を提供しています
(注: これは N3485 には記載されていません)
1).なぜ私は通常の関数に対して同様のことを行うことができないのですか?
これによりエラーが発生しerror : parameters declared auto
ます。
N3690 7.1.6.4/4 から
auto または decltype(auto) を使用して宣言された変数の型は、その初期化子から推測されます。この使用は、ブロック (6.3)、名前空間スコープ (3.3.6)、および for-init-statement (6.5.3) で変数を宣言するときに許可されます。[...]
param1
andparam2
がブロック スコープに該当し、自動控除の対象になると仮定するのは間違っていますか?
2)。そのような機能が許可されている場合、落とし穴は何でしょうか?
私はgcc 4.8.1を使用しています。
ありがとうございました
c++ - 汎用ラムダはC++14でどのように機能しますか?
auto
C++ 14標準では、ジェネリックラムダはどのように機能しますか(引数タイプとしてのキーワード)?
異なる引数の型ごとに、コンパイラが同じ本体で型を置き換えた新しい関数を生成する C++ テンプレートに基づいていますか (コンパイル時のポリモーフィズム)、または Java のジェネリック (型消去) に似ていますか?
コード例:
c++ - clang 3.3 および GCC 4.7 const v の constexpr
Ubuntu 13.04でGCC 4.7.3標準ライブラリヘッダーファイルを使用してclang 3.3を使用して、かなり大きなコード本体をコンパイルしようとしました。これは、1 つの問題を除いてすべてうまくいきました。このコードは、このマシンの標準の Ubuntu clang 3.2 パッケージで既にコンパイルされているため、これは clang 3.3 コンパイラの変更であると想定しています。複合ヘッダーを使用した const および constexpr に関連する問題。特に、複合型には次のコード ブロックがあります。
コンパイルで、コードの最初のブロックを入力すると、コンパイラはそれを認識します
これにより、次のように実際のメンバー関数が const ではないというエラーが clang で生成されます。
次の投稿「constexpr」と「const」の違い、および他のいくつかの同様のドキュメントを読みましたが、これが GCC ヘッダーの問題なのか、clang コンパイラの問題なのかはまだはっきりしていません。私の感じでは、constexpr とマークされたメンバー関数は、コンパイラによって const と見なされるべきであり、その場合、clang は間違っています。