Описание тега partial-specialization
Частичная специализация шаблона - это особая форма специализации шаблона класса. Обычно используется по отношению к языку программирования C++, он позволяет программисту специализировать только некоторые аргументы шаблона класса, в отличие от явной специализации, в которой предоставляются все аргументы шаблона.
2
ответа
Специализация шаблона с аргументом по умолчанию
У меня есть программа, которая заключается в следующем. Есть базовый шаблон struct X и частичная специализация с SFINAE. template <typename T, typename U = void> struct X{ X() { std::cout << "in 1" << std::endl; }; }; template <…
23 июл '18 в 12:38
5
ответов
Почему шаблон функции не может быть частично специализированным?
Я знаю, что спецификация языка запрещает частичную специализацию шаблона функции. Я хотел бы знать обоснование, почему оно запрещает это? Они не полезны? template<typename T, typename U> void f() {} //allowed! template<> void f<int, c…
24 фев '11 в 07:11
8
ответов
Как сделать шаблонную специализацию в C#
Как бы вы занялись специализацией в C#? Я создам проблему. У вас есть тип шаблона, вы не знаете, что это такое. Но вы знаете, если это происходит от XYZ ты хочешь позвонить .alternativeFunc(), Отличным способом является вызов специализированной функ…
02 мар '09 в 01:23
1
ответ
Как правильно определить частичную специализацию для структуры члена шаблонного класса?
Я получаю сообщение об ошибке при попытке добавить std::iterator_traits для шаблонной структуры-члена - т.е. у меня есть класс итератора, который является членом шаблонного внешнего класса: namespace Toolbox { template <typename CharType> clas…
06 июн '18 в 14:41
3
ответа
Как специализировать только некоторые члены шаблонного класса?
Код: template<class T> struct A { void f1() {}; void f2() {}; }; template<> struct A<int> { void f2() {}; }; int main() { A<int> data; data.f1(); data.f2(); }; ОШИБКА: test.cpp: In function 'int main()': test.cpp:16: error: '…
10 фев '11 в 10:01
2
ответа
Частичные функции / метод обхода специализации шаблона
Я знаю, что частичная специализация шаблонов не поддерживается для функций и методов классов, поэтому мой вопрос: каковы общие решения или шаблоны для решения этой проблемы? Ниже Derived происходит от Baseи оба этих класса имеют виртуальные методы g…
20 дек '14 в 02:03
1
ответ
C++ шаблонная специализация - специализируйте только некоторые методы, используя по умолчанию impl для остальных
У меня есть шаблон, как: template <typename T> class MyThing { public: static void Write(T value) { ... } static void Flush() { ... } } Для определенного типа, например boolЯ хочу специализироваться на Write метод без изменения других методов.…
23 окт '14 в 20:21
0
ответов
Два аргумента шаблона и специализации
Я пытаюсь сделать шаблон класса с двумя аргументами. Тогда я хочу, чтобы функции были специализированными. template<class T, int number> class TestClass{ public: TestClass(T x){ a = x; z=number; }; T print(); private: T a; int z; }; template&l…
25 фев '16 в 12:49
1
ответ
Неопределенная реализация шаблона класса с нетиповыми пакетами параметров
Я пытался специализироваться Expr: #include <tuple> #include <type_traits> #include <iostream> template<class Tp, class List> struct Expr { Expr(){std::cout << "0"<< std::endl;}; }; //specialization #1 template<…
24 июл '17 в 19:27
1
ответ
Проблема с частичной специализацией шаблона класса
Я пытался реализовать функцию, которая нуждается в частичной специализации шаблона и вернулась к методике статической структуры, и у меня возник ряд проблем. template<typename T> struct PushImpl<const T&> { typedef T* result_type; ty…
17 июн '10 в 21:48
1
ответ
Частичная специализация шаблона для указателя шаблона на функцию
Рассмотрим следующий реферат Subscription учебный класс: template <typename TMessage> class Subscription { public: virtual ~Subscription() {} virtual bool handle(const TMessage &) = 0; }; В некоторых случаях было бы удобно, если бы один кл…
28 май '15 в 13:41
1
ответ
Может ли std::tuple_element дублироваться как универсальный шаблонный аргумент?
Этот вопрос заставил меня задуматься. Иногда полезно получить фактический аргумент из специализации шаблона класса, если он не может определить публичный typedef аргумента. В C++03 это признак либо плохого дизайна шаблона, либо противоречивого замы…
13 сен '10 в 09:03
2
ответа
Как специализировать шаблонные функции с типами шаблонов
Можно ли специализировать функцию шаблона для типов шаблонов? Я не знаю, правильна ли моя терминология, поэтому приведу простой пример того, чего я хочу достичь: #include <vector> #include <string> #include <iostream> template<t…
02 апр '14 в 11:41
3
ответа
Что я должен делать вместо частичной специализации шаблонов функций?
Я хочу написать следующее: template <typename S, typename T> void foo() { /* code for the general case */ } template <typename T> void foo<MySType,T>() { /* partially specialized code - for any kind of T, but when S is MySType */ }…
03 май '14 в 07:19
2
ответа
Как специализировать шаблон класса с параметром шаблона?
Я хотел бы специализировать шаблон класса на параметре шаблона типа параметра шаблона шаблона. Является ли это возможным? Если да, какой синтаксис? #include <type_traits> template <typename T> struct X {}; // primary template template<…
22 дек '15 в 23:38
1
ответ
Частичная специализация существующей мета-функции с использованием mpl
Может быть, я не все там сегодня, но мне интересно, как заставить это работать. Я хотел бы частично специализировать range_mutable_iterator и range_const_iterator из библиотеки boost, но только для конкретных типов, которые я бы предпочел не упомина…
03 авг '10 в 19:55
2
ответа
Как специализировать функции шаблона?
Как переопределить функции специализации шаблона? Я строю матрицу C++11 из векторов векторов. Я уже реализовал векторы (не могу использовать std::vector) и я хочу, чтобы матрица наследовала от myVector<myVector<T>>, myVector<T> раб…
15 янв '19 в 22:00
5
ответов
Частичная специализация шаблона C++ - специализация только одной функции-члена
Наткнулся на другую проблему с шаблонами: Проблема: я хочу частично специализировать контейнерный класс (foo) для случая, когда объекты являются указателями, и я хочу специализировать только метод delete. Должно выглядеть так: Код lib template <t…
18 ноя '09 в 17:43
1
ответ
Генерация статической таблицы работает с GCC, но не clang; прослушивается лязг?
Однажды я написал некоторый код, который генерировал статическую таблицу / массив во время компиляции для некоторого метапрограммирования шаблона (идея заключается в том, что строки в стиле C можно создавать во время компиляции (они просто char Масс…
05 дек '14 в 17:00
2
ответа
Требуется множественная частичная специализация и полная специализация <> после определения типа
Я использую класс C++ "событие", который позволял одному или двум аргументам в быть вызванными делегатами. В последнее время я добавил поддержку для делегатов, которые не требуют аргументов, однако, когда я специализирую класс на использовании аргум…
14 сен '10 в 08:46