問題タブ [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++ の概念は存在型の形式ですか?
ウィキペディアで存在型の定義 ( Existential_types ) を見ていましたが、C++ の概念 (特に概念 lite )に何らかの形で似ているように感じます。
C++ の概念は存在型の形式ですか?
そうでない場合、2つの違いは何ですか?
c++ - C++ の概念と static_assert
C++ の概念で正確に新しいものは何ですか? 私の理解では、それらは を使用することと機能的に同等static_assert
ですが、「良い」方法でコンパイラエラーが読みやすくなります (Bjarne Stroustup が言ったように、10 ページまたはエラーは得られず、1 つだけです)。
基本的に、コンセプトでできることはすべて を使っても実現できるというのは本当static_assert
ですか?
足りないものはありますか?
c++ - タイプ A がタイプ B から構築できることを静的にアサートする
私は静的アサーションを実行して、A と B の 2 つのタイプをチェックしようとしています。クラス A には、署名 A(B& b) または A(const B& b) のパブリック コンストラクターが必要です。
public A(B& b) または A(const B& b) または A(B b) が存在するかどうかis_constructable_from<A, B>::value
を評価するようなものが欲しいです。true
これは boost is_convertible type_traitとは多少異なると思います。
どうすればこれを達成できますか?
Boost Type Traits または Concept Check ライブラリでこれを行うものを見逃していませんか?
現在、式が有効なものであることを静的にチェックするためにこれが必要です。これA a(b)
は、Sehe が示唆しているように、以前の概念よりも制限が緩くなっています。両方のケースの解決策を歓迎します。Boost を使用することが許可されています。
c++ - C++14 は制約のないジェネリック関数をサポートしますか?
ここでGCC 4.9.0 リリースの変更を見ているときに、次の内容を読んでうれしい驚きを覚えました。C++ の「新しい言語と言語固有の改善」セクションの下:
G++ は、N3889: Concepts Lite Specificationの §4.1.2 および §5.1.1 で指定されている制約のないジェネリック関数をサポートしています。簡単に言えば、 auto は、一般的なラムダと同様に、暗黙的な関数テンプレート パラメーターを導入するために、任意の関数宣言子のパラメーター宣言で型指定子として使用できます。
GCC 4.9.0 をビルドしたところ、最初のテストは期待どおりに機能しました。Concepts Lite は今後の C++14 仕様の補助的なものであり続けると思います。「制約のないジェネリック関数」が C++ の一部になる計画はありますか?
c++ - C++ ランタイムの概念とは
最近、Web で C++ の概念の詳細を調べていて、いくつかの論文で「ランタイムの概念」と呼ばれるものへの言及をいくつか見つけました。それらはコンパイル時の概念とどのように正確に異なるのか、なぜ最初に導入されたのか、どのように実装されるのか、なぜ C++ の将来にとって重要なのか? 論文を一瞥すると、ランタイムの概念は、オブジェクト指向コードと汎用コードの間に現在存在する現在の緊張を緩和することを目的としているという一般的な考えが得られますが、それ以外のことはあまりわかりません。