Описание тега specialization
A powerful feature of C++'s templates is `template specialization`. This allows alternative implementations to be provided based on certain characteristics of the parameterized type that is being instantiated. Template specialization has two purposes: to allow certain forms of optimization, and to reduce code bloat.
4
ответа
Классифицированный контейнерный класс C++: как лучше поддерживать как упорядоченные, так и неупорядоченные типы элементов?
Я пишу шаблонный контейнерный класс C++, который может поддерживать свое содержимое в четко определенном порядке. Ранее он использовал указатели на функции для упорядочивания своего содержимого разумным образом, зависящим от типа, но я пытаюсь измен…
26 июл '09 в 00:45
2
ответа
Частичная специализация шаблона класса C++11
Я пытаюсь скомпилировать код ниже, но я получаю сообщение об ошибке: неверное количество аргументов шаблона template<int start, int end, int step> struct range{}; template<int start, int end> struct range<start, end, 1>{}; template…
01 апр '16 в 09:29
1
ответ
Variadic рекурсивный шаблон mem fun специализация
Это код, который я хочу написать: template <typename T1, typename ... tail> class record : public record<tail...> { using baseT = record<tail...>; T1 elem; public: record(T1 first, tail... rest) : elem(first), baseT(rest...) {} tem…
22 дек '13 в 11:35
3
ответа
Тот же класс с 2 или 1 параметром шаблона
Как сделать шаблонную специализацию, которая принимает 2 параметра по сравнению с обычным 1? Я строил класс указателя и теперь думал о расширении для создания массива, но если я попробую что-то вроде этого: template<class T,int s> class pointe…
26 май '09 в 22:04
1
ответ
Вызов шаблонного метода, допускающего только подклассы в качестве параметра
Предположим, у меня есть набор классов, унаследованных от одного суперкласса S: class S{ ... }; class C1 : public S{ ... }; class C2 : public S{ ... }; Тогда предположим, что у меня есть шаблонный метод: template<class T> void foo(T* instance)…
08 сен '15 в 09:47
2
ответа
Специализация шаблона для перечислимых значений
Можно ли специализировать метод класса для отдельных значений перечисления? В частности, у меня есть перечисление и класс следующим образом: #include <iostream> #include <stdio.h> using namespace std; enum class Animal { dog, cat, bird }…
06 дек '17 в 04:42
2
ответа
Наследование шаблонных классов другой специализации
Это вопрос из любопытства о правилах C++ без какого-либо реального практического использования. Работая с шаблонами, я создал иерархию классов следующим образом: #include <stdio.h> // Declaration template <int X = 0> struct A; // Special…
10 июл '13 в 13:17
1
ответ
Специализация шаблона C++ для функции-члена
Я пытаюсь реализовать очень простой Vector3 (Vec3) учебный класс. Я борюсь с особым случаем: Vec3<size_t> дополнение с Vec3<int>, Как я могу сделать шаблонную специализацию для этого случая? Любая помощь будет оценена. Бен #include <a…
29 июн '15 в 14:54
0
ответов
Слабо связанные шаблонные специализации
Можно ли определить слабо связанные шаблонные специализации? В math_functions.h у меня есть: namespace utils { template <typename T_TYPE> T_TYPE sqrt(T_TYPE value); template <> float sqrt(float value) __attribute__((weak)); template <…
23 янв '18 в 09:55
1
ответ
Частичная специализация функции класса с шаблонным аргументом
Я хотел бы иметь класс шаблона Queue, который может определять внутреннюю структуру контейнера через аргумент шаблона и специализировать функцию Top (поскольку разные контейнеры используют разные имена функций для доступа к переднему элементу), напр…
24 окт '13 в 07:57
1
ответ
Как специализировать конструктор шаблонов
Я умею хорошо специализировать конструкторы: template < typename TType > class Field { public: Field( const Msg& ) : _type( TType() ) { } protected: TType _type; }; template < > Field < double >::Field( const Msg& msg ) : _…
04 ноя '16 в 20:32
4
ответа
C++ рекурсивная специализация шаблонов
Я написал абстрактный шаблонный класс-контейнер, который должен определять числовые операторы (унарные + и -, двоичные +, - и *), если это имеет смысл для параметра шаблона (то есть, если это числовой тип). Затем я хотел бы применить эти числовые оп…
30 дек '13 в 14:56
1
ответ
Специализация функции члена класса шаблона?
Я прошел через тонны вопросов на эту тему, но так и не смог найти ответ, который мог бы использовать. У меня есть шаблон класса, который объявлен следующим образом: template <typename Type, int inSize> class sortedVector { public: sortedVector…
18 мар '12 в 13:29
3
ответа
Аргумент по умолчанию для специализации шаблонной функции
template <typename T> void function(T arg1, T min = std::numeric_limits<T>::min(), T max = std::numeric_limits<T>::max()) { } template <> void function<int>(int arg1, int min,int max) { } int main(int argc,char* argv[])…
04 авг '10 в 03:17
4
ответа
Использование const char** с шаблонной специализацией
Я пытаюсь написать шаблонную специализацию для функции, которая возвращает максимальное значение массива числовых значений (общая версия) или самую длинную c-строку массива c-строк (специализация). Если я не использую константу, мои прототипы функци…
09 май '14 в 13:35
1
ответ
C++ - специализировать шаблон функции на шаблонном классе с не типом параметра шаблона
У меня есть шаблон класса Foo: template <class A, A value, class B> class Foo {}; И у меня есть шаблон функции validateType() template <class T> bool validateType() { return false; } Теперь я хочу специализировать его для некоторых типов…
25 ноя '17 в 15:01
2
ответа
G++ генерирует код для неиспользуемых шаблонных специализаций?
В небольшом коде сериализации для проекта, над которым я работаю, у меня есть тип, размер которого зависит от компилятора. Чтобы справиться с этим, я решил использовать шаблонную специализацию, которая прекрасно работает. Все решается во время компи…
30 янв '13 в 16:36
5
ответов
Специализация класса шаблонов C++: почему общие методы должны быть повторно реализованы
В образце: #include <iostream> using namespace std; class B { public: virtual void pvf() = 0; }; template <class T> class D : public B { public: D(){} virtual void pvf() {} private: string data; }; template <> class D<bool> :…
09 янв '12 в 14:21
1
ответ
Специализация Scala ArrayBuilder без использования котлов
Я ищу хорошие практики, чтобы избежать переписывания одного и того же кода снова и снова для достижения распаковки. Скажем, у меня есть что-то вроде этого: def speedyArrayMaker[@specialized(Long) A: ClassTag](...): Array[A] = { val builder = Array.n…
30 апр '13 в 18:15
1
ответ
Использование частичного шаблонного класса в качестве специализированной шаблонной функции
У меня есть шаблон, и я хочу специализировать его, используя вектор (который сам является шаблоном). Это возможно? Вот ошибка компилятора: ошибка C2768: 'serialize': недопустимое использование явных аргументов шаблона. Небольшой пример того, что мне…
27 мар '15 в 17:02