問題タブ [boost-any]

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 投票する
1 に答える
46 参照

design-patterns - Boost.Any が Adapter パターンのアプリケーションであるのはなぜですか?

Boost.Any が Adapter パターンのアプリケーションであるのはなぜですか? 適応者は誰ですか?よくわかりません。ありがとう!

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

c++ - typeid を使用してさまざまな型を処理する

boost::any を使用して、sqlite の戻り値をカプセル化しようとしています。次に、これらを印刷するループを作成しようとしました。

私の最初の考えは、次のようなことをすることでした:

typeid は数値 ID ではなくインスタンスを返すため、経験豊富なプログラマーにとって、これが機能しないことは明らかです。いくつかの調査の後、私はどちらかを試すかもしれないと考えましtypeid(...).hash_code()たが、これは十分にconstexpr修飾されていません (ハッシュ衝突の危険性を除いて)。

質問

  1. if ... else ...typeid に基づいてオブジェクトを処理するために過度の迷路を構築するよりも良い方法はありますか?
  2. hash_codeではない理由はありconst_exprますか?これは、オブジェクト ファイルを個別にコンパイルした結果ですか?
  3. の用途はstd::type_index何ですか? <いくつかの追加演算子 ( 、<=、 )しか提供しないことを考えると>>=なぜその機能を と統合できなかったのstd::type_infoでしょうか?
0 投票する
1 に答える
145 参照

c++ - boost::any 型のサポートが制限されている

と同様に機能するboost::anyが、より限定された型セットを持つ型が必要です。このようなもの:

これをどのように実装することをお勧めしますか? (自分で、または既存のソリューションを使用して)

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

c++ - BOOST::ANY Q1を覚えようとしている

このプログラムは、呼び出し時にセグメンテーション違反を起こします

デバッガーで実行すると、Change 関数に入ったように見えますが、thisポインターを調べると 0x00 です。私は明らかに BOOST::any を間違って使用していますが、何が間違っているのかわかりませんか?

以下の自動の戻り値の型を信じています

私が言うとき、Boost::any で decltype と auto を使用する必要があるかもしれません

しかし、これは何が起こっているのかについての私の理解を広げます。

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

c++ - decltypeの戻り値の型を記憶(保存)する方法はありますか?

このような関数呼び出しの戻り値を std::vector に格納しています。

これは非常に大雑把な見積もりです

プレッシャーがまだ範囲内にある場合、私は簡単に言うことができます:

問題は、保存されている自動車の種類をどのように覚えているかです。

? AFAIK、decltypeは保存できる値さえ返さないのですか?

したがって、boost::any __and__ を格納できるコンテナーが必要です。それが decltype であることを覚えておいてください (これは機能しませんが、これは私が達成しようとしているものの本質です)

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

c++ - ポリモーフィズム、可変個引数テンプレートの継承、スライシング、boost::any 型キャスト

このプログラムはコンパイルされますが、boost::any キャストは失敗します。このようにテンプレート クラスをスライスすると、ポインター演算が混乱するのではないかと思います。アイデアは、コンテナに格納されているもの

たとえば、さまざまなタイプがあります

タイプを boost::any に格納することで失われるため、指定された圧力で存在するオブザーバーの実際の数を知らなくても、Change を呼び出す必要があります。ポリモーフィズムと仮想メソッドで解決しようとしましたが、少なくともこの試みはうまくいきません。

助言がありますか?

編集

Change 関数のアドレスを保存する最初の試み:

関数のアドレスをプッシュバックするにはどうすればよいですか? これは機能しません:

そして、どうやってそれを抽出するのですか?

編集 2

提案されたコードを追加すると、エラーが発生します。

編集 3 C++14 がインストールされています:

この構造体を使用するにはどうすればよいですか? 私は言うことができます:

そして私はプレッシャーを押し戻すことができます

ただし、pressures[0].Change(1999) と言う方法がわかりません。私が言うと、次のエラーが表示されます。

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

c++ - インデックスによる可変個引数テンプレートの型へのアクセス

可変個引数テンプレートの型をインデックスで取得したいと思います。インデックスはテンプレート引数として指定されます。私はなんとか機能する「ハック」を見つけましたが、それは可変個引数テンプレート プログラミングの精神に沿っていないと思います。また、余分なメモリを使用します。

いくつかの説明を含むコードを次に示します。

InputPortsTupleオブジェクトを削除し、 の型を推測するための何らかの形式の再帰手順に置き換えたいと思いますgetInputPortValue

N理想的には、テンプレート引数ではなく動的パラメーターになりたいと考えています。ただし、これが可能かどうかはわかりません。