問題タブ [variadic]

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 に答える
2725 参照

g++ - ミックスイン、可変個引数テンプレート、およびC++のCRTP

シナリオは次のとおりです。可変数のミックスインを持つことができるホストクラスが必要です(可変個引数テンプレートではそれほど難しくありません。たとえば、http: //citeseerx.ist.psu.edu/viewdoc/summary?doiを参照してください)。 = 10.1.1.103.144)。ただし、(CRTPイディオムを使用して)パブリックタイプを参照できるように、ミックスインをホストクラスによってパラメーター化することも必要です。この2つを混在させようとすると、問題が発生します。正しい構文は私にはわかりません。たとえば、次のコードはg++4.4.1でコンパイルできません。

エラーあり:

可変個引数テンプレートとCRTPの混合に成功した経験はありますか?

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

c++ - 可変個引数テンプレートについて

私は現在、新しい c++0x 可変個引数テンプレートを使用しており、非常に楽しいですが、メンバーのインスタンス化のプロセスについて質問があります。

この例では、強く型付けされた列挙型をエミュレートして、ランダムで有効な強力な列挙型を選択できるようにしようとしています (これは単体テストに使用されます)。

このコードで得られる結果は次のとおりです。

誰かが私がここで混乱していることを指摘できますか???

Ps: gcc 4.4.3 を使用


私はコードをより一般的になり、ハードコアコーディングを可能な限り減らすために作り直しました(@Matthieu M.)。しかし、なぜ私が以前にこれをすべて行っているのかを説明したいと思います。

多くの開発者が私のコードで新しい c++0x 標準を採用したので、私はそれについて満足していません。しかし、テスト ユニットを作成しようとすると、厳密に型指定された列挙型に問題があります。

問題は、強い型付けされたランダムな列挙型を生成できないことです (生成できることはわかっていますが、よりエレガントな方法で生成したいと考えていました)。したがって、このコードでは、可変個引数テンプレートと可変個引数マクロ (古いダーティ マクロ) を使用して、厳密に型指定されスコープが設定された列挙型を宣言し、ランダムに選択できます。

コードは次のとおりです。

今私を悩ませているのは、PP_NARG マクロの制限です (引数の数を数える他の方法は見つかりませんでした)。

これを強化するためのポインタやヒントを喜んで受け入れます.

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

c++ - 可変個引数テンプレートのない汎用アロケータ クラス?

free() されたときにオブジェクトのメモリを実際に解放しないが、それをキューに保持し、新しいオブジェクトが要求された場合に以前に割り当てられたオブジェクトを返すジェネリック アロケータ クラスを作成しようとしています。さて、私の頭を包み込めないのは、アロケーターを使用するときにオブジェクトのコンストラクターに引数を渡す方法です (少なくとも、可変個引数テンプレートに頼ることなく)。私が思いついた alloc() 関数は次のようになります。

それでも、今日の C++ (および可変個引数テンプレートをサポートしない古いバージョンの GCC) と互換性のあるコードが必要です。オブジェクトコンストラクターに任意の量の引数を渡す方法は他にありますか?

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

c++ - 可変個引数テンプレートで参照を適切に使用する方法

私は次のコードのようなものを持っています:

今後の標準から提案された可変個引数テンプレートを使用して、それを再実装したいと思います。ただし、これまでオンラインで見たすべての例はprintfのような例のようですが、ここでの違いは参照の使用にあるようです。私は次のことを思いついた:

私が知りたいのは:

  • 参照の代わりにr値を使用する必要がありますか?

  • 私が望むことを正しく達成する方法についての可能なヒントまたは手がかり。

  • 再帰関数呼び出しの問題に関して、新しく提案された標準はどのような保証を提供しますか?上記の可変個引数バージョンが元のバージョンと同じくらい最適であるという兆候はありますか?(インラインまたはそのようなものを追加する必要がありますか?)

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

c++ - バインダーと可変個引数のテンプレートがセグメンテーション違反になる

以下のプログラムを書きました

gcc 4.3.3 でコンパイルしたところ、セグメンテーション違反が発生しました。gdb とこのプログラムでしばらく過ごした後、関数とクラスのアドレスが混同されており、クラスのデータ アドレスの呼び出しが許可されていないように思えます。さらに、代わりにコメント行を使用すると、すべて正常に動作します。

他の誰かがこの動作を再現したり、ここで何が問題なのかを説明したりできますか?

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

c++ - Boost.Tuple は C++0x 可変個引数テンプレートと互換性がありますか?

私は可変個引数テンプレート(gcc 4.5)をいじっていて、この問題にぶつかりました:

GCC エラー メッセージ:

boost::tuplebyのすべての出現を置き換えると、正常にstd::tupleコンパイルされます。
ブーストタプルの実装に問題はありますか? それともこれはgccのバグですか?

今のところ、Boost.Tuple に固執する必要があります。回避策を知っていますか?
ありがとう。

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

c++ - パラメータパックの長さを見つける方法は?

次のような可変個引数テンプレート関数があるとします。

長さ関数を使用してパラメータリストの長さを見つけるにはどうすればよいですか?

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

haskell - 引数の任意の長いリストに関数を適用する

任意の数の引数と整数のリストを持つ関数を受け取り、関数の結果を返す関数 apply を作成したいと考えています (リスト内の各整数は順番に引数です。

私は次のようなことを考えていました:

しかし、型シグネチャが間違っているため、これが機能しないことはわかっています。関数は int のリストを使用せず、いくつかの int 引数を使用するだけです。

さらに、基本ケースに到達すると、適用する f 引数は実際には整数である必要があり、とにかく型シグネチャに違反します。

この種の問題に対処する方法を知っている人はいますか?

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

c++ - コンテナーにテンプレート パラメーターを入力する

可変長テンプレートに渡されたテンプレート パラメーターを固定長の配列に入力したいと考えています。その目的のために、次のヘルパー関数テンプレートを作成しました

次のクラス テンプレート

を介して静的定数を初期化しました

今、配列

は でstd::array<int, 3>、値13およびが含まれます4。この動作を実現するには、もっと簡単な方法が必要だと思います。助言がありますか?

編集:ノア・ロバーツが彼の答えで示唆したように、私は次のようにプログラムを修正しました:私はパラメータリストの要素を数える新しい構造体を書きました:

そして、次の関数を書きました

今、私は一緒に取得します

std::array<int, 3>コンテンツを含む1020および30. さらに提案はありますか?

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

c++ - 可変個引数テンプレートを条件付きでコンパイルするにはどうすればよいですか?

コンパイラが可変個引数テンプレートをサポートしているかどうかを教えてくれるマクロはありますか?

それらがサポートされていない場合は、一連のオーバーロードでそれらをシミュレートすると思います。より良いアイデアはありますか?仕事を楽にするプリプロセッサライブラリがあるのではないでしょうか?