問題タブ [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++ - テンプレート テンプレート パラメータのテンプレート パラメータを使用
私は現在template
、C ++で s をいじっていて、 template template parameters
.
次のクラスがあるとしましょう。
本質的に、static class
likeMyHub
の実装を受け入れ、それらを使用MyInterface
する特定のstatic
メソッドを提供する like が必要static T Foo()
です。
それから私は使用しようとしましたMyHub
:
残念ながら、T
( static T Foo()
MyHub の) タイプがタイプに名前を付けていないというエラーが常に表示されます。
私はそれが機能することを期待します
- テンプレート パラメータのテンプレート パラメータの
Impl
名前は T です MyHub
1 つのテンプレート パラメーターを持ち、メソッドを含むテンプレート化されたクラスです。Foo
これまでのところ、ドキュメントとGoogleの結果を掘り下げた後、これに対する解決策を見つけることができなかったので、あなたの何人かが私を助けてくれることを願っています.
c++ - Can I write a catch clause similar to abbreviated function templates?
At the top of my program, I have an exception handler.
It looks something like this:
As I obtain more an more exception types,
I'd like to take a more generic approach.
How can I apply generic programming to the Handle_All_Exceptions
function?
Would something like this be possible in newer versions of C++?
c++ - std::pair を使用できますが、.first および .second メンバー名の名前を変更できますか?
私が遭遇する一般的な設計上の問題は、2 つの変数を一緒にバンドルすると、それらを意味のある方法で参照できなくなることです。
代わりに基本的な構造体を作成することを検討しましたが、次のような多くの利点が失われますstd::pair
。
- make_pair
- 非メンバーのオーバーロードされた演算子
- スワップ
- 得る
- 等
データ メンバーの名前を変更したり、別の識別子を提供したりする方法はありfirst
ますか?second
を受け入れるすべての関数を活用したいと考えてstd::pair
い
ましたが、次の方法でそれらを使用できるようにし たいと考えていました。
c++ - テンプレート クラスがよく知られている型に is_convertible の場合、ファンクタを特殊化する
boost::is_convertible
したがって、テンプレートの種類が次の場合に特定のコードを適用したいWellKnownType
:
このために、ファンクターを使用することを考えました:
次に、次の場合に別のことを行うために、このファンクターを特殊化したいと思いますboost::is_convertible<T, WellKnownType>
。
次に、ファンクターを使用するように定義を簡単に変更し、変換可能Foo
な場合は何かを行い、そうでない場合は何もしないと思います。T
WellKnownType
私が知らないのは、この動作を達成する方法です。については知ってBOOST_CONCEPT_REQUIRES
いますが、それをテンプレートの特殊化に適用する方法がわかりません。何か助けはありますか?
c++ - 概念は、テンプレート キーワードの他のすべてのインスタンスを置き換えることができますか?
C++ の概念を使用して、キーワードのすべての外観をtemplate
(概念自体の宣言を除いて) 置き換えることができますか?
template
テンプレート化されたクラスやテンプレート化された関数など、他の言語構造にキーワードを使用する必要がある理由があるかどうか、興味があります。私が思いつく唯一の例外は、テンプレート化された型エイリアスです。コンパイル時の計算にテンプレートを使用することは、constexpr
関数によって置き換えることができます。
私の質問を簡潔にするために、
コンセプト + constexpr の採用では置き換えられない、通常のテンプレート宣言でできることは何ですか?
c++ - ContiguousIterator のレイアウト: メンバー関数のリスト?
私自身のクラスの場合、(std::iterator を使用せずに) イテレータ クラスをゼロから作成する必要があります (これは ContiguousIterator になります)。必要なメンバーとその署名のリストを探しています。標準ライブラリに準拠するためにそのような反復子が提供する必要があるすべての関数がわからないためです。
これらのメンバーとその署名の完全なリストはどこにありますか?