問題タブ [partial-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++ - テンプレートの部分的な特殊化の問題
数学プログラミング用のサイズと型のジェネリック ベクトル クラスを作成しようとしています。部分的な特殊化に問題があります。
この問題は、ベクター クラスのメンバ メソッドを特定のサイズに特化しようとすると発生します。
簡単な例を挙げることができます:
この単純な例をコンパイルしようとすると、「クロス」特殊化が既存の宣言と一致しないというコンパイル エラーが発生します。
テンプレートとして cross を宣言しようとしました:
このバージョンはコンパイルに合格しますが、リンク時に失敗します:
ここで何が欠けていますか? ありがとう、フロラン
c++ - テンプレートの特殊化と昔ながらの関数
簡単な質問があります。このコードを確認してください。
もちろん、g++ 4.7.2 でコンパイルすると動作しますが、出力が「3」ではなく「2」である理由がわかりません。
私が覚えている限り、テンプレート以外の関数は常にテンプレート関数よりも優先されるのに、特殊化された foo と呼ばれるのはなぜですか?
ありがとう
c++ - コレクション内の各要素で print を呼び出すための汎用アルゴリズム
次のようなテンプレート関数を記述する場合:
コレクションをループしてイテレータを逆参照するとき、vector<int>
に変更しない限り、次のようなものがあればすべて正常に機能しますvector<int*>
。コードを複製せずに、単一のテンプレート関数の違いに対処する最善の方法は何ですか?
c++ - テンプレート化された関数のオーバーロードを部分的に特殊化されたテンプレート化されたクラスの静的メソッドに変換する方法は?
「文字、符号付き整数、符号なし整数、浮動小数点、ポインター」など、型の品質に基づいて特殊化したい関数がいくつかあります。type_traitsを使用することはこれを行う方法のようであり、次のようなコードがあります。
私の実際のコードを除いて、私は、、なども持ってbar
いbaz
ますfoo
。
ただし、品質ごとにこれらすべての関数をメソッドとして1つのテンプレートクラスにグループ化したいと思いstatic
ます。これはどのように行うのが最善ですか?これが私の素朴で壊れたタグ、SFINAE、および部分的特殊化の使用の試みです。
注:実際のコードでは、 static-methodsに加えてbar
、baz
などがあります。foo
参考までに、これはC++03です。
余談ですが、私は従来の方法でテンプレート関数のオーバーロードを行っていますか?
c++ - 指定されたコンテナ型のイテレータ型の部分特殊化
テンプレート引数に Iterator 型を受け入れるテンプレート構造体があります。今度は、そのクラスをさまざまなコンテナーのイテレーター用に特殊化する必要があります。私は std::vector で試しました
しかし、私はこのコンパイラエラー(VS11)を受け取りました: 'T' : template parameter not used or deducible in partial specialization
なぜこれがうまくいかないのか誰か教えてください。そして、それを機能させる方法は?
c++ - デフォルトのテンプレート引数は専門化に対応できますか?
こんにちは:)この質問について調べてみましたが、関連する投稿がたくさんあるようですが、これまでのところ、私の問題を解決できる回答はありませんでした。この特定の質問に回答する投稿を知っている場合は、どの投稿か教えてください。この投稿を削除します。
これが私がやろうとしていることです。テンプレート引数が 1 つあるクラスがあり、そのデフォルト値はテンプレートの特殊化に対応しています。これまでのところ (以下のコードを参照)、コンパイルされません。私を悩ませているのは、2 つのテンプレート引数を使用した同様のケースと、部分的なテンプレートの特殊化がコンパイルされ、正常に動作することです.. :/
私は何を間違っていますか?
ケース 1: 2 つのテンプレート引数 (コンパイルして動作)
ヘッダ
cpp
ケース 2: 1 つのテンプレート引数 (コンパイルしない)
ヘッダ
cpp
エラーが表示されます: 'b' の前にテンプレート引数がありません。これを読んでくれてありがとう!:)
c++ - 列挙型に一致するクラス テンプレートの部分的なテンプレート特殊化を作成できますか?
次のような構文を提供する一連のクラステンプレートの明示的な特殊化によって強化された関数テンプレートがあります
(どこGetAs<t>
に次のようなものがあります:
)
その型が列挙型の場合に特殊化しDesiredType
て、返される型が列挙型 (または) の基になる型と一致するようにしたいと思いenum class
ます。
それは可能ですか、それともクライアントは基になる型を自分で指定する必要がありますか?
次のようなコードを許可しようとしています。
c++ - 特定の値に対する C++ テンプレートの特殊化
私はOpers
いくつかの算術演算を含む構造体を持っています: mult()
, div()
, mod()
.
そして、 の特定の値に対してテンプレートを特殊化する必要がありますn
。の例を次に示しOpers<1>
ます。
n
しかし、 2 のべき乗 (n = 2,4,8,16, ...) の特殊化も行いたいと考えています。この場合、操作mult()
を最適化できますdiv()
(左または右にビット単位のシフトを使用)。
私は次のような建設を探しています
可能ですか、またはどのマニュアルを読む必要がありますか?
アップデート。C++11 の使用は許可されており、さらに優れているでしょう。
c++ - 継承されたネストされたクラス テンプレートの部分的な特殊化について
この質問は、gcc のバグ レポート (gcc 4.5.0 で修正されたと思われる) が言及された以前の Q&Aに関連しており、ネストされたクラス テンプレートの部分的な特殊化に関するいくつかの特殊性に関係しています。
私のセットアップは、部分的に特化Base
されたネストされたクラス テンプレートを持つクラスがあることです(クラス内で明示的な仕様が許可されていないため、ダミー パラメーター トリックを使用します)。Inner
char
Derived
ここで、さらに特化したいクラスを定義しますがInner
、これは何らかの奇妙な理由でクラス内で行うことができません (まだ部分的な特化であるにもかかわらず)。
最初の質問Derived::Inner
:名前空間スコープで部分的に特殊化する必要があるのはなぜですか?
しかし、最も奇妙な部分は、 と のInner
両方のさまざまな部分特殊化を呼び出すBase
と、に対してのみ行っDerived
た部分特殊化がにも適用されることです。int
Derived
Base
2 番目の質問: 部分的にしか特殊化されていないのに、なぜ が にBase::Inner<int>::value
等しいのですか?false
Derived::Inner<int>
gcc 4.8.0 を使用したオンラインの例。この動作を説明する標準からの引用を特に探しています。