問題タブ [template-function]
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++ - 関数テンプレートの特殊化を可変個引数テンプレート関数に渡す
関数テンプレートの特殊化のアドレスを通常のテンプレート関数に渡すのに問題はありません。
ただし、同じ特殊化を可変個引数テンプレートに渡そうとすると、次のようになります。
GCCで次のコンパイラエラーが発生します(4.6.1と4.7.0を試しました)。
なぜこれらのエラーが発生するのですか?
c++ - 派生クラスが基本クラスのテンプレート関数を呼び出すときのリンクの問題
テンプレート関数を持つクラスBase inがありますbase.h
このテンプレートは読み取りint
またはdouble
入力することになっており、クラスBaseから派生したクラスDerivedがあります
クラス Derived で関数 test を呼び出そうとしましたが、リンカ エラーが発生しました。
base.cpp
最後に、 の場合、追加することに気付きました
コンパイラ エラーは発生しません。この解決策は厄介に思えます。より良い解決策はありますか? ありがとうございました
c++ - C ++:候補テンプレートが無視されました:テンプレートパラメーターに明示的に指定された引数が無効です
私はこの関数ヘッダーを持っています:
これが私がそれを使う方法です:
これはGetPixel
とPutPixel
:
そして、私はこのエラーを受け取ります:
note: candidate template ignored: invalid explicitly-specified argument for template parameter 'getFunc' [3]
なんで?
c++ - ジェネリック関数の operator== に一致しません
私は以下のコードを持っています.2つのイテレータとオブジェクトを取り、出現をチェックして出現回数を返す汎用関数を書き込もうとしています。
私の単純なクラスの下
以下は一般的な関数です
私のメイン:
フルエラー
このエラーが発生していることがわからないようです。
c++ - 関数内のポインターをキャストする C++
私は現在このマクロを持っています
名前の競合の問題が発生しているため、これを次のようなテンプレート化された関数に移動したいと思います
しかし、これは不可能だと思いますが、これについて確認したいですか? r を変更するには、ポインターへのポインターが必要ですか?
c++ - テンプレート引数の型としてテンプレート引数を使用する
次のように複数のテンプレートを使用することはできないようです。
次のように呼び出すことができます。
次のエラー メッセージが表示されますtoo many template-parameter-lists
。
template <typename T, T value>
withを使用すると機能printValueAsInteger<int, 123>()
しますが、その場合は型を明示的に指定する必要があります。printValueAsInteger<123>()
印刷するようにするにはどうすればよいvalue as integer is 123
ですか?
編集:
これが必要な理由をより具体的に説明します。私の目標は、メンバー関数を関数ポインターとして渡すことであり、テンプレートを使用してラップすることを考えました。
そして、次のように渡します。
編集:
エラー、おそらく実行時定義の変数をテンプレート引数として使用すべきではない (そして使用できない) ことに気付きました。私は現在、そうでなければテンプレート引数でインスタンス化されたクラスを使用し、そのクラスを使用するテンプレート関数を作成して、それを回避しようとしています。またはそのようなもの。いいえ、うまくいきません。
callFunction はサードパーティ API の一部であるため、署名を変更できないことに注意してください。
やっと!
ヘッダーに以下を入れます。
そしてこれをソースファイルに:
次のように使用できます。
メソッドの派生インスタンスのバージョンが正常に呼び出されます。残念ながら、バインドできるメソッドの数は固定されています (この例では 3 つ) が、簡単に拡張できます。
c++ - テンプレートの特殊化を使用する理由
なぜテンプレートの特殊化が理にかなっているのだろうか?
次のことは同等ではありませんか?
テンプレートの専門化:
特殊化ではなく非テンプレート関数:
非テンプレート関数が常に優先されるため、これらは同じであると思います。
c++ - 浮動小数点型がテンプレート関数のテンプレート パラメーター型として無効なのはなぜですか?
私はウェブサイトで宣言を読みました
は有効ですが、次は無効です
1 つ目はテンプレート関数の正当な宣言であるのに、2 つ目はそうではないのはなぜですか?
c++ - テンプレート関数が派生クラスへのポインターを基本クラスへのポインターに解決できないのはなぜですか
コンパイラは、コンパイル時に派生クラスへのポインターを取得できず、それが基底クラスを持っていることを認識できませんか? 次のテストに基づいて、できないようです。問題が発生する場所については、最後に私のコメントを参照してください。
どうすればこれを機能させることができますか?