Описание тега template-specialization
Template specialization refers to programmer-generated explicit specialization of templates for specific types.
3
ответа
Шаблон проектирования, позволяющий избежать потери при передаче сообщений
Базовый класс MessageHandler вывел классы. Они хотели бы передавать сообщения друг другу. Сообщения могут быть разных классов, но могут быть сделаны для общего класса. Как каждый может MessageHandler избежать передачи полученного сообщения? Можно ли…
17 фев '12 в 00:59
1
ответ
Конструкторы копирования шаблона внутри класса шаблона
У меня есть шаблон класса, который имеет несколько конструкторов копирования шаблона, и это работает. Но я хочу специализировать конструктор копирования для int и не могу этого сделать. Эта программа печатает: "CC". Но нужно: "iC" Помоги мне, пожалу…
06 фев '15 в 16:35
1
ответ
Определенный шаблонный метод inline не найден для специализации
Рассмотрим следующий минимальный пример: template <int A> struct Foo { inline Foo(); }; template <> struct Foo<1> { inline Foo(); }; template <int A> inline Foo<A>::Foo() {} int main() { Foo<2> okay; Foo<1> …
19 окт '17 в 07:12
1
ответ
Отображение Enums в шаблонных специализациях
У меня есть шаблонный класс, который использует глобальное перечисление с некоторыми режимами, которые мне нужны в качестве параметров для функций-членов этого класса. Я хочу написать специализацию этого класса, которая требует, чтобы значения этого…
22 ноя '13 в 12:51
1
ответ
Специализируясь только на вложенном шаблоне
У меня есть следующий шаблон: template<typename FirstParam> struct First { template<typename SecondParam> struct Second; }; Пример специализации: template<typename T> class D {}; template<> template<> struct First<C1…
25 сен '14 в 18:04
2
ответа
Специализация шаблона для всех итераторов std::map
У меня есть черты класса, говорящие: template <class T> struct KeyValueTraits { typedef typename T::key_t key_t; typedef typename T::value_t value_t; } Теперь я хотел бы объявить специализацию этих черт для всех итераторов std::map template &l…
01 апр '17 в 19:34
2
ответа
Ошибка компилятора C++ при специализации шаблона
Я хотел бы специализировать шаблонный метод для класса C, который сам шаблонизируется параметром int. Как мне это сделать? template <int D=1> class C { static std::string foo () { stringstream ss; ss << D << endl; return ss.str();}…
18 июн '10 в 15:22
1
ответ
Шаблонная специализация для шаблонного типа
У меня есть структура, которая содержит черту о типе: template<typename T> struct x_trait { static const bool has_x = true; }; Это верно для всех типов, но для определенного типа шаблона. Для этого определенного типа шаблона я хочу изменить че…
19 дек '13 в 11:22
2
ответа
Понимание шаблонов в D
Я учу себя "D", и у меня возник, что может показаться основным для некоторых, вопрос относительно шаблонов. Например, статья, которую я сейчас читаю (см. Нижнюю часть этого поста), содержит следующий код: int foo(int x) { return x; } string foo(stri…
22 июл '16 в 03:57
1
ответ
Почему моя специализация шаблона компилируется, если она не выполняется?
Примечание: я понимаю, что многое из того, что я здесь делаю, будет проще в C++11, но я не могу использовать это в своем проекте. Я делаю систему управления контентом. Основные требования: Нужно уметь определять классы "владельца содержимого", котор…
12 апр '14 в 19:28
1
ответ
Отдельное объявление и определение специализации шаблонной функции: различное поведение для функций-членов и не членов
Я хочу объявить специализацию для шаблона функции, но определю это позже в исходном файле. Рассмотрим следующий пример: .hpp // approach #1 template <typename T> const char *GetTypeName(); template <> const char *GetTypeName<int>()…
24 апр '13 в 22:23
1
ответ
Частичная специализация шаблонов для переменных типов и пакетов переменных параметров, расширенных до внешнего типа, приводит к неоднозначности
Я пытаюсь скомпилировать следующую программу с g++-4.7 (20120228-1): #include <cstdlib> #include <tuple> template<typename X> struct Y {}; template<typename T, size_t Level, size_t TermLevel> struct A; // (B) dummy for T=tupl…
20 мар '12 в 13:56
2
ответа
Объявления специализации шаблона функции C++ и аргументы шаблона; нет против <> против <тип>
При изучении шаблонов функций я вижу специализации, объявленные по-разному: template<> void f(argtype) {} template<> void f<>(argtype) {} template<> void f<argtype>(argtype) {} ... и мне интересно, чем они отличаются. У…
01 ноя '14 в 12:28
2
ответа
Может компилятор сказать мне, какую перегруженную или шаблонную функцию он выбрал?
В частности, используя g++ в linux, есть ли способ определить, какая перегруженная или шаблонная функция была выбрана для конкретного оператора? Более конкретно, я не предполагаю, что я обязательно знаю все возможные варианты, которые могут быть в з…
01 ноя '12 в 17:17
2
ответа
C++ частичная шаблонная специализация оператора потока
У меня есть класс Matrix с функцией друга для использования с оператором<<. Все это прекрасно работает, но теперь я хочу частично специализировать эту функцию-друга для работы по-другому, если класс Matrix имеет Matrix в качестве параметра шаблона (…
22 окт '11 в 14:54
2
ответа
Когда мне нужно указать тип во втором <> шаблонной специализации?
У меня есть базовый шаблон: template <class X> void f(X x) {} Теперь я видел два способа специализировать это: template <> void f<>(int x) {} Или же: template <> void f<int>(int x) {} gcc ест оба варианта, но не оба одн…
09 июл '13 в 06:31
5
ответов
Требуют ли специализации шаблона синтаксис шаблона <>?
У меня есть класс посетителя, похожий на этот: struct Visitor { template <typename T> void operator()(T t) { ... } void operator()(bool b) { ... } }; Очевидно, что operator()(bool b) предназначен для специализации предыдущей функции шаблона. Т…
01 июн '09 в 22:22
5
ответов
Почему шаблон функции не может быть частично специализированным?
Я знаю, что спецификация языка запрещает частичную специализацию шаблона функции. Я хотел бы знать обоснование, почему оно запрещает это? Они не полезны? template<typename T, typename U> void f() {} //allowed! template<> void f<int, c…
24 фев '11 в 07:11
4
ответа
Важность и необходимость специализации шаблона функции
Я прочитал C++ Primer, и там написано, что специализация шаблонов функций - это сложная тема, но я полностью потерян. Кто-нибудь может привести пример, почему специализация шаблона функции важна и необходима? Почему шаблоны функций не поддерживают ч…
04 фев '10 в 03:29
1
ответ
Как я могу специализировать деструктор только для одного случая или нескольких случаев?
Я могу специализировать деструктор для одного случая, но у меня возникают проблемы с указанием компилятору просто использовать обычный деструктор для любых других случаев: #include <iostream> template <int = 0> struct Foo { ~Foo(); }; in…
05 окт '17 в 05:09