問題タブ [specialization]
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++ - あいまいな部分的なテンプレートの特殊化
何度も特化 (および部分特化) する必要がある特性クラスがあります。
一部の部分的な特殊化は重複しています。
動作するコードで同じ結果を得るにはどうすればよいですか?
私は夢中になりましたenable_if
とis_same
、もうそれが正しい方法なのかさえわかりません...
c++ - Operator()の部分的な特殊化
私のクラスの1つは、テンプレート化された関数を宣言しています。
部分的に専門にしたいと思いtypename A
ます。B
は非常に最小限のインターフェースを実装するタイプのファミリーであり、私たちはそれらを多く使用しているので、私の専門分野はで一般的なものにしたいと思いB
ます。typename A
リターンタイプとしてのみ使用されているため、これは二重に厄介だと思います。
インターネットから、関数を部分的に特殊化できないことを収集したので、次のようにクラスを作成しました。
(Visual Studio 2008を使用して)それをコンパイルしようとすると、コンパイラがクラッシュし(!)、次のエラーが発生します。
これは私の問題であり、コンパイラの問題ではないと思います。私が目指している部分的な特殊化を表現するためのより良い方法はありますか?
c++ - 特定の型、c++ の部分的なテンプレートの特殊化
テンプレートの部分的な特殊化を使用して、関数/メソッドを作成したいと思います:
A)仮パラメータの特定のプリミティブ型(int、double、floatなど)を1つだけ処理し、例外をスローする他の型を処理する
B) 仮パラメータのより多くの非プリミティブ型 (ユーザー定義型) の処理、および例外をスローする他の型の処理...
いくつかのコード例が役立ちます (c++ ブースト ライブラリなし)。ご協力いただきありがとうございます。
c++ - C++部分テンプレート特殊化構文
プライマリテンプレートの場合:
テンプレートの特殊化では、違いは何ですか
と
function - F# インライン関数の特殊化
私の現在のプロジェクトには、スクリプト コードの字句解析と解析が含まれているため、fslex と fsyacc を使用しています。Fslex LexBuffers にはいずれかLexBuffer<char>
のLexBuffer<byte>
種類があり、両方を使用するオプションが必要です。
両方を使用するには、タイプ ^buf -> string の語彙素関数が必要です。これまでのところ、私の専門化の試みは次のようになっています。
関数本体の型は である必要があるという型エラーが表示されます^buf -> string
が、推定される型は ですstring
。明らかに、私は何か(主に?) 間違っています。
私が試みていることはF#でも可能ですか? もしそうなら、誰かが私に適切な道を教えてもらえますか?
ありがとう!
c++ - テンプレート内のメソッド ポインターを部分的に特殊化する
読み取り専用、書き込み専用、および読み取り書き込みの動作でプロパティを実装しようとしています。テンプレートの特殊化がここに行く方法だと思ったので、これを試しました:
これは機能せず、コンパイラ エラー (VC) が発生します。部分的な特殊化は、依存型の非型テンプレート パラメーターを持つことはできません。
私はここで道に迷っています、これは可能なのですか?
時間をありがとう、リチャード。
c++ - メンバー関数のオーバーロード/テンプレートの特殊化の問題
table::scan_index(std::string, ...)
オーバーロードされたメンバー関数を呼び出そうとしましたが、成功しませんでした。わかりやすくするために、関係のないコードはすべて削除しました。
文字列を特殊なケースとして処理するために、名前がtable
付けられたオーバーロード/テンプレート化されたメンバー関数を持つクラスがあります。scan_index()
次に、hitlist
呼び出すテンプレート化されたメンバー関数を多数持つクラスがあります。table::scan_index(T, ...)
そして最後に、すべてを開始するコード:
問題は、 を呼び出す代わりにtable::scan_index(std::string, ...)
、テンプレート化されたバージョンを呼び出すことです。オーバーロード (上記) と特殊な関数テンプレート (下記) の両方を使用してみましたが、何も機能しないようです。このコードを数時間見つめた後、明らかな何かが欠けているように感じました。何か案は?
更新:通話<T>
から装飾
を削除しました。scan_index()
その結果、文字列パラメーターを使用した呼び出しは正常にコンパイルされましたが、他の型 (double など) を使用した呼び出しでは次のエラーが発生しました。
そこで、テンプレートの特殊化の使用に戻りました。今、私はこのエラーを受け取ります:
参考までに、VC++ 10.0 を使用しています。
解決策:scan_index()
クラスからテンプレート化された関数を
削除し、table
オーバーロードされた 4 つの関数 (そのうちの 3 つは署名を除いて同一) を単純に記述することで、この問題を修正しました。幸いなことに、それらはすべて非常に短い (10 行未満) ため、それほど悪くはありません。
c++ - 関数テンプレートの特殊化に失敗しました
これは宿題ですが、別のアプローチで既に提出されています。
Visual Studio 2008 から以下を取得しています
コードは次のとおりです。
関数オブジェクトは次のように定義されます。
ここでの治療法は何ですか?
[編集] 申し訳ありませんが、継承を明確にする必要があったかもしれません
[/編集]
[Edit2]
Toolbox からの提案 (非常に妥当と思われる) の後、次のエラー メッセージが表示されました。
main.cpp は同じですが、ファンクター階層とソース ファイルにわずかな変更が加えられています。前方宣言などが機能しなかったため、定義を別のファイルに入れる必要がありました。
私は本当にこれを理解していません。ここで何が欠けていますか? いくつかの変換操作、または何?
[/Edit2]
[Edit3]
最後で最後の編集をお願いします。コードの一部をデバッグして書き直した後、実際にこれが機能するようになりました。これが私が最終的に得たものであり、それが私ができる最善のことです
これは、別のプロジェクト (この日の大部分をこれをいじるのに費やしています) と、数日前に提出した実際のプロジェクトの両方で機能しているようです。
お時間をいただき、ありがとうございました。
[/Edit3]
c++ - テンプレート クラスの特殊化/明示的なインスタンス化により、コンパイル/リンカーの速度が向上しますか?
次のテンプレート クラスが、ほとんどがint型名のプロジェクトで頻繁に使用され、このクラスの導入以降、リンカの速度が著しく低下したとします。
クラスの特殊化を定義すると、コンパイル速度が向上しますか? 例えば。
または、明示的なインスタンス化はより良い解決策を提供しますか? 例えば。
c++ - 参照型に特化した関数テンプレート
このコードの出力はなぜですか:
は
一般
一般
一般
3つ目は、関数が正確に特殊化されているため、驚くべきことです。int&
編集:私はオーバーロードが適切な解決策かもしれないことを知っています。その背後にあるロジックを学びたいだけです。