Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
#include <iostream>
template <typename T> struct Tag { char get() { return 'T'; } };
template <> struct Tag<int> { char get() { return 'i'; } };
int main() {
Tag<int> a;
Tag<short> b;
std::cout << a.get() << b.get();
}iT
- Ждать
ii: специализация подходит только для своего типа. При выборе классаshortне продвигается доint, иTag<short>строится из основного шаблона. - Ждать
TT: уTag<int>есть полная специализация, и дляintона заменяет основной шаблон.
- Как дать
Tagотдельную версию дляdouble? - Почему у полной специализации могут быть члены, которых нет у основного шаблона?