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

0 投票する
4 に答える
239 参照

c++ - テンプレート テンプレート パラメータのテンプレート パラメータを使用

私は現在template、C ++で s をいじっていて、 template template parameters.

次のクラスがあるとしましょう。

本質的に、static classlikeMyHubの実装を受け入れ、それらを使用MyInterfaceする特定のstaticメソッドを提供する like が必要static T Foo()です。

それから私は使用しようとしましたMyHub

残念ながら、T( static T Foo()MyHub の) タイプがタイプに名前を付けていないというエラーが常に表示されます。

私はそれが機能することを期待します

  • テンプレート パラメータのテンプレート パラメータのImpl名前は T です
  • MyHub1 つのテンプレート パラメーターを持ち、メソッドを含むテンプレート化されたクラスです。Foo

これまでのところ、ドキュメントとGoogleの結果を掘り下げた後、これに対する解決策を見つけることができなかったので、あなたの何人かが私を助けてくれることを願っています.

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

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++?

0 投票する
5 に答える
7520 参照

c++ - std::pair を使用できますが、.first および .second メンバー名の名前を変更できますか?

私が遭遇する一般的な設計上の問題は、2 つの変数を一緒にバンドルすると、それらを意味のある方法で参照できなくなることです。

代わりに基本的な構造体を作成することを検討しましたが、次のような多くの利点が失われますstd::pair

  • make_pair
  • 非メンバーのオーバーロードされた演算子
  • スワップ
  • 得る

データ メンバーの名前を変更したり、別の識別子を提供したりする方法はありfirstますか?second

を受け入れるすべての関数を活用したいと考えてstd::pair
ましたが、次の方法でそれらを使用できるようにし たいと考えていました。

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

c++ - テンプレート クラスがよく知られている型に is_convertible の場合、ファンクタを特殊化する

boost::is_convertibleしたがって、テンプレートの種類が次の場合に特定のコードを適用したいWellKnownType:

このために、ファンクターを使用することを考えました:

次に、次の場合に別のことを行うために、このファンクターを特殊化したいと思いますboost::is_convertible<T, WellKnownType>

次に、ファンクターを使用するように定義を簡単に変更し、変換可能Fooな場合は何かを行い、そうでない場合は何もしないと思います。TWellKnownType

私が知らないのは、この動作を達成する方法です。については知ってBOOST_CONCEPT_REQUIRESいますが、それをテンプレートの特殊化に適用する方法がわかりません。何か助けはありますか?

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

c++ - 概念は、テンプレート キーワードの他のすべてのインスタンスを置き換えることができますか?

C++ の概念を使用して、キーワードのすべての外観をtemplate
(概念自体の宣言を除いて) 置き換えることができますか?

templateテンプレート化されたクラスやテンプレート化された関数など、他の言語構造にキーワードを使用する必要がある理由があるかどうか、興味があります。私が思いつく唯一の例外は、テンプレート化された型エイリアスです。コンパイル時の計算にテンプレートを使用することは、constexpr関数によって置き換えることができます。

私の質問を簡潔にするために、
コンセプト + constexpr の採用では置き換えられない、通常のテンプレート宣言でできることは何ですか?

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

c++ - ContiguousIterator のレイアウト: メンバー関数のリスト?

私自身のクラスの場合、(std::iterator を使用せずに) イテレータ クラスをゼロから作成する必要があります (これは ContiguousIterator になります)。必要なメンバーとその署名のリストを探しています。標準ライブラリに準拠するためにそのような反復子が提供する必要があるすべての関数がわからないためです。

これらのメンバーとその署名の完全なリストはどこにありますか?