|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ テン : [てん] 【名詞】 1. 10 2. ten 3. (P), (n) 10/ten ・ ー : [ちょうおん] (n) long vowel mark (usually only used in katakana) ・ 部分 : [ぶぶん] 【名詞】 1. portion 2. section 3. part ・ 分 : [ぶん, ふん] 1. (n,n-suf,pref) (1) part 2. segment 3. share 4. ration 5. (2) rate 6. (3) degree 7. one's lot 8. one's status 9. relation 10. duty 1 1. kind 12. lot 13. (4) in proportion to 14. just as much as 1 ・ 特殊 : [とくしゅ] 1. (adj-na,n) special 2. unique ・ 化 : [か] (suf) action of making something
テンプレートの部分特殊化 (Partial template specialization)は、C++の用語で、テンプレートにおいて、特定のテンプレート実引数が与えられたときに、元と異なる定義を使用させるようにする仕組みである。 ==テンプレートと明示的特殊化== テンプレートはメタクラスである。つまりコンパイラに対してどのようなクラスを作るかを指示したある種の抽象データ型であると言える。たとえばテンプレートであるvector(動的配列)をプログラマが使うときには、 vector 、vector などのようにデータ型を指定して実体化する。実体化されたvectorは、コンパイラの生成したオブジェクトコードの中ではそれぞれ別のコードが生成され、それぞれ別のクラスとして扱われる。もしテンプレートクラスは特定のデータ型を指定して使われることが多いと知っており、そのデータ型の場合にだけ人の手で最適化をかけられる(たとえば整数型のときは2の乗数での乗除算をシフト演算にするなど)としたら、通常の場合のテンプレートとは別に、明示的特殊化を行うことができる。テンプレートを使用する際に指定されたデータ型が、明示的特殊化されているものだった場合、コンパイラは明示的特殊化されたものをコンパイルしてコードを生成する。 たとえば、これは要素数nの配列の先頭要素を指すポインタpに対して、全ての要素をxにするということを行うC++の関数テンプレートarray_fillである。 これは、特殊化ではない通常のテンプレートの定義である。このような明示的特殊化でないものを一次テンプレートと言う (X3014 14.5.4)。 もしその配列がchar型だった場合、標準Cライブラリのmemsetを使うことができ、その方がstd::fill_nより高速化されているとする。そのような場合、次のように明示的特殊化すれば、array_fillにchar型の先頭要素を指すポインタが渡されたときにはmemsetを用いるようにすることができる。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「テンプレートの部分特殊化」の詳細全文を読む スポンサード リンク
|