テンプレートの部分特殊化 (Partial template specialization)は、C++の用語で、テンプレートにおいて、特定のテンプレート実引数が与えられたときに、元と異なる定義を使用させるようにする仕組みである。
テンプレートはメタクラスである。つまりコンパイラに対してどのようなクラスを作るかを指示したある種の抽象データ型であると言える。たとえばテンプレートであるvector(動的配列)をプログラマが使うときには、vector<int>、vector<string>などのようにデータ型を指定して実体化する。実体化されたvectorは、コンパイラの生成したオブジェクトコードの中ではそれぞれ別のコードが生成され、それぞれ別のクラスとして扱われる。
vector<int>
vector<string>
もしテンプレートクラスは特定のデータ型を指定して使われることが多いと知っており、そのデータ型の場合にだけ人の手で最適化をかけられる(たとえば整数型のときは2の乗数での乗除算をシフト演算にするなど)としたら、通常の場合のテンプレートとは別に、明示的特殊化を行うことができる。テンプレートを使用する際に指定されたデータ型が、明示的特殊化されているものだった場合、コンパイラは明示的特殊化されたものをコンパイルしてコードを生成する。
たとえば、これは要素数nの配列の先頭要素を指すポインタpに対して、全ての要素をxにするということを行うC++の関数テンプレートarray_fillである。
template<typename T> inline void array_fill(T* p, std::size_t n, T x) { std::fill_n(p, n, x); }
これは、特殊化ではない通常のテンプレートの定義である。このような明示的特殊化でないものを一次テンプレートと言う (X3014 14.5.4)。
もしその配列がchar型だった場合、標準Cライブラリのmemsetを使うことができ、その方がstd::fill_nより高速化されているとする。そのような場合、次のように明示的特殊化すれば、array_fillにchar型の先頭要素を指すポインタが渡されたときにはmemsetを用いるようにすることができる。
template<> inline void array_fill(char* p, std::size_t n, char x) { std::memset(p, x, n); }
部分特殊化は、複数の型にまたがって影響を及ぼすようになった明示的特殊化であると言える。
template<typename Container> struct get_iterator { typedef typename Container::iterator type; };
このコードは例えば、次のように用いる。
using std::string; string s = "abc"; get_iterator<string>::type it = std::find(s.begin(), s.end(), 'a');
ここで、次のような部分特殊化を導入する。
template<typename T, std::size_t N> struct get_iterator<T[N]> { typedef T* type; };
get_iteratorの後ろの<T[N]>という記述で、コンパイラはこれが部分特殊化だと認識する。これによって、次のように配列に対してもget_iteratorが使用可能になる。
const int MAX = 10; int a[MAX] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; get_iterator<int[MAX]>::type it = std::find(a, a + MAX, 5);
int[MAX]だけでなく、const char[80]やstd::complex[4]などT[N]の形に一致する型であればいずれも部分特殊化版のget_iteratorが使用される。このように、どの一次テンプレート・明示的特殊化・部分特殊化を使用するかはパターンマッチ的に決定される。
テンプレートの部分特殊化が可能なのはクラステンプレートのみである。関数テンプレートは部分特殊化できず、明示的特殊化のみ可能である。しかし多くの場合、関数テンプレートの部分特殊化は多重定義によって代用できる。
Processione del Venerdì SantoL'Arca S. Croce alla Processione del Venerdì santoTiporeligiosa DataVenerdì santo (a cadenza biennale) Celebrata inSavona ReligioneCattolicesimo Oggetto della ricorrenzaPassione di Cristo Tradizionitrasporto dei 15 gruppi scultorei (casse lignee) attraverso le principali vie cittadine La processione del Venerdì santo di Savona è un antico rito della tradizione cristiana che affonda le sue radici nel medioevo, ovvero all'epoca dei flagellanti del Duecento. C…
العلاقات البريطانية النمساوية المملكة المتحدة النمسا المملكة المتحدة النمسا تعديل مصدري - تعديل العلاقات البريطانية النمساوية هي العلاقات الثنائية التي تجمع بين المملكة المتحدة والنمسا.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة وم
هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (مايو 2022) قضية شركة مونسانتو ضد مزارع بذور غيرتسونمعلومات عامةالبلد الولايات المتحدة الاختصاص الولايات المتحدة تاريخ النشر 21 يونيو 2010 أحداث مهمة 27 أبريل 2010 : oral argument (…
KeturaBiografiKeluargaPasangan nikahAbraham AnakZimranYoksanMedan bin AbrahamMidianIsybakShuah (en) Ketura (Ibrani: קְטוּרָה, Ktura, Qəṭûrā, artinya dupa atau kemenyan; bahasa Inggris: Keturah) adalah istri ke-3 (atau gundik[1]) Abraham menurut Alkitab Ibrani dan Perjanjian Lama Alkitab Kristen.[2] Abraham mengambil Ketura sebagai istrinya setelah Sara meninggal[3] dan sebelum Ishak dan Ribka mempunyai anak, sebab Ribka pada mulanya dianggap mandul …
تريسكاولت شعار الاسم الرسمي (بالفرنسية: Trescault) الإحداثيات 50°05′25″N 3°05′32″E / 50.090277777778°N 3.0922222222222°E / 50.090277777778; 3.0922222222222[1] [2] تقسيم إداري البلد فرنسا[3] التقسيم الأعلى باد كاليه خصائص جغرافية المساحة 4.67 كيلومتر مربع[1]…
WebGNOME Web 3.32PengembangPengembang Peramban Web GNOMERilis perdana11 September 2003 (2003-09-11)Repositorigitlab.gnome.org/GNOME/epiphany.git Bahasa pemrogramanC (GTK+)MesinWebKitGTK+ (sebelumnya Gecko)Sistem operasiLinux, BSDPlatformGNOMETersedia dalamLebih dari 60JenisPeramban webLisensiGPLv2+Situs webprojects.gnome.org/epiphany/ Web (mulanya bernama Epiphany sejak tahun 2003 sampai 2012) merupakan sebuah peramban web yang bebas untuk lingkungan meja GNOME. Peramban ini diturunkan dari…
Military rank in Poland and Ukraine Great Chorąży of the Polish Crown, 1605 Standard-bearer (Polish: Chorąży [xɔˈrɔ̃ʐɨ]; Russian and Ukrainian: хорунжий, khorunzhiy; Lithuanian: chorunžis; Belarusian: харунжы, romanized: kharunzhy) is a military rank in Poland, Ukraine and some neighboring countries. A chorąży was once a knight who bore an ensign, the emblem of an armed troops, a voivodship, a land, a duchy, or a kingdom. This function later evolved into …
Ricoh Imaging Logo Rechtsform Kabushiki-gaisha (Aktiengesellschaft) Gründung 17. Dezember 1938, Neugründung am 1. Oktober 2011 (Umbenennung am 1. August 2013) Sitz Itabashi, Tokio, Japan Leitung Noboru Akahane Mitarbeiterzahl ca. 1.900 (2015)[1] Umsatz 218,66 Mrd. Yen (2010/2011)[2] Branche Glas- und Elektronikhersteller Website www.ricoh-imaging.co.jp Pentax ist ein Markenname der Ricoh Imaging K.K. (jap. リコーイメージング株式会社, Rikō Imējingu Kabushiki-gaish…
In linguistics, an unaccusative verb is an intransitive verb whose grammatical subject is not a semantic agent. In other words, the subject does not actively initiate, or is not actively responsible for, the action expressed by the verb. An unaccusative verb's subject is semantically similar to the direct object of a transitive verb or to the subject of a verb in the passive voice. Examples in English are the tree fell; the window broke. In those sentences, the action (falling, breaking) can be …
La Caleta De arriba abajo y de izquierda a derecha; el palacio de la tinta, vista de la bahía de Málaga desde el barrio, playa de La Caleta, Hotel Miramar y palmeras en el paseo marítimo. País España España• Com. autónoma Andalucía Andalucía• Ciudad Málaga• Distrito CentroUbicación 36°43′15″N 4°24′09″O / 36.7209, -4.40257[editar datos en Wikidata] La Caleta es uno de los barrios en los que se divide ad…
Це не форум для загального обговорення предмету статті Українсько-російські відносини. Будь ласка, залишайте лише коментарі, що призводять до поліпшення статті. Будь-які коментарі, що не стосуються цього, можуть бути вилучені. Зміст 1 Продовження... 2 Старі Жахи 3 Статтю дещо…
Athletics at the1995 Summer UniversiadeTrack events100 mmenwomen200 mmenwomen400 mmenwomen800 mmenwomen1500 mmenwomen5000 mmenwomen10,000 mmenwomen100 m hurdleswomen110 m hurdlesmen400 m hurdlesmenwomen3000 msteeplechasemen4×100 m relaymenwomen4×400 m relaymenwomenRoad eventsMarathonmenwomen10 km walkwomen20 km walkmenField eventsHigh jumpmenwomenPole vaultmenLong jumpmenwomenTriple jumpmenwomenShot putmenwomenDiscus throwmenwomenHammer throwmenJavelin throwmenwomenCombined eventsHeptathlonwom…
Sebuah rumah dengan gaya jengki di Padang Pariaman Jengki, atau gaya Yankee, adalah sebuah gaya arsitektur modernis pascaperang yang berkembang di Indonesia setelah kemerdekaannya. Gaya ini terbilang laku di Indonesia antara akhir tahun 1950-an hingga awal 1960-an.[1][2][3] Gaya jengki menggambarkan pengaruh baru Amerika Serikat pada arsitektur Indonesia setelah ratusan tahun kepemimpinan kolonial Belanda. Gaya ini dapat dianggap sebagai interpretasi tropis dari gaya ruma…
Force aérienne du Turkménistan Pays Turkménistan Allégeance Forces armées turkmènes Type Armée de l'air Effectif 3 000 Couleurs modifier La Force aérienne du Turkménistan est la composante aérienne des Forces armées turkmènes[1]. Histoire Cette section est vide, insuffisamment détaillée ou incomplète. Votre aide est la bienvenue ! Comment faire ? Elle hérite d'une partie de l'équipement de l'armée rouge se trouvant sur son territoire lors de l' éclatement …
Турнір другої ліги другого чемпіонату України з футболу 1992—1993 проводився з 17 серпня 1992 по 3 липня 1993 року. Зміст 1 Учасники 2 Підсумкова таблиця 3 Результати матчів 4 Найкращі бомбардири 5 Підсумки 6 Див. також 7 Посилання Учасники У турнірі другої ліги чемпіонату України брал…
Сибирский НИИ геологии, геофизики и минерального сырья(АО «СНИИГГиМС») Международное название SNIIGGIMS Основан 1957 Директор Эпов М.И. Сотрудников около 680[источник не указан 1624 дня] Расположение Россия, Новосибирск Юридический адрес 630091, Новосибирск, Красный проспек…
Philosophy that sentient individuals are the center of moral concern Part of a series onAnimal rights Overview Animal welfare Around the world History Timeline Animal cruelty Veganism Vegetarianism Primate rights in research Movement Advocates Vegans Vegetarians Groups Animal abuse Animal–industrial complex Killing Mutilation Wild animals Consumption Dogs Horses Cats Cattle Bloodsports Bullfighting Hunting Fishing Animal testing Cosmetic Captivity Zoos Circuses Oceanariums Companion animals Pu…
Protein-coding gene in the species Homo sapiens HSF2Available structuresPDBOrtholog search: PDBe RCSB List of PDB id codes5D8K, 5D8LIdentifiersAliasesHSF2, HSF 2, HSTF 2, heat shock transcription factor 2External IDsOMIM: 140581 MGI: 96239 HomoloGene: 37931 GeneCards: HSF2 Gene location (Human)Chr.Chromosome 6 (human)[1]Band6q22.31Start122,399,551 bp[1]End122,433,119 bp[1]Gene location (Mouse)Chr.Chromosome 10 (mouse)[2]Band10|10 B4Start57,362,481 bp[2 …
Turkish conglomerate company Demirören GroupTypeHoldingIndustryEnergy, Industry, Real Estate, Construction, Media, EducationFounded1956; 67 years ago (1956) in Istanbul, TurkeyFounderErdoğan DemirörenKey peopleYıldırım Demirören, Tayfun Demirören, Meltem DemirörenRevenueUS$3 billion (2012)Websitehttp://www.demiroren.com Demirören Group is a Turkish conglomerate company.[1] Its properties include Milangaz (a liquefied petroleum gas distributor with 9% of the Tu…
Protestant church in Friedrichstadt, Berlin, Germany Jerusalem ChurchChurch of the Archangels Michael and Gabriel (1944/45)Jerusalemskirche (de)Kirche zu den Erzengeln Michael und Gabriel (1944/45)Jerusalem Church in 1906, seen from south (Lindenstraße), view into Jerusalemer Straße with Lindenstr. continuing to the rightReligionAffiliationUnited Protestant since its reconstruction in 1968, originally Roman Catholic, from 1539 on Lutheran, deserted in the Thirty Years War, Calvinist (1658–16…
Lokasi Pengunjung: 3.129.195.17