Описание тега partial-specialization

Частичная специализация шаблона - это особая форма специализации шаблона класса. Обычно используется по отношению к языку программирования C++, он позволяет программисту специализировать только некоторые аргументы шаблона класса, в отличие от явной специализации, в которой предоставляются все аргументы шаблона.
2 ответа

Специализация шаблона с аргументом по умолчанию

У меня есть программа, которая заключается в следующем. Есть базовый шаблон struct X и частичная специализация с SFINAE. template <typename T, typename U = void> struct X{ X() { std::cout << "in 1" << std::endl; }; }; template <…
5 ответов

Почему шаблон функции не может быть частично специализированным?

Я знаю, что спецификация языка запрещает частичную специализацию шаблона функции. Я хотел бы знать обоснование, почему оно запрещает это? Они не полезны? template<typename T, typename U> void f() {} //allowed! template<> void f<int, c…
8 ответов

Как сделать шаблонную специализацию в C#

Как бы вы занялись специализацией в C#? Я создам проблему. У вас есть тип шаблона, вы не знаете, что это такое. Но вы знаете, если это происходит от XYZ ты хочешь позвонить .alternativeFunc(), Отличным способом является вызов специализированной функ…
02 мар '09 в 01:23
1 ответ

Как правильно определить частичную специализацию для структуры члена шаблонного класса?

Я получаю сообщение об ошибке при попытке добавить std::iterator_traits для шаблонной структуры-члена - т.е. у меня есть класс итератора, который является членом шаблонного внешнего класса: namespace Toolbox { template <typename CharType> clas…
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: '…
2 ответа

Частичные функции / метод обхода специализации шаблона

Я знаю, что частичная специализация шаблонов не поддерживается для функций и методов классов, поэтому мой вопрос: каковы общие решения или шаблоны для решения этой проблемы? Ниже Derived происходит от Baseи оба этих класса имеют виртуальные методы g…
1 ответ

C++ шаблонная специализация - специализируйте только некоторые методы, используя по умолчанию impl для остальных

У меня есть шаблон, как: template <typename T> class MyThing { public: static void Write(T value) { ... } static void Flush() { ... } } Для определенного типа, например boolЯ хочу специализироваться на Write метод без изменения других методов.…
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&lt…
24 июл '17 в 19:27
1 ответ

Проблема с частичной специализацией шаблона класса

Я пытался реализовать функцию, которая нуждается в частичной специализации шаблона и вернулась к методике статической структуры, и у меня возник ряд проблем. template<typename T> struct PushImpl<const T&> { typedef T* result_type; ty…
1 ответ

Частичная специализация шаблона для указателя шаблона на функцию

Рассмотрим следующий реферат Subscription учебный класс: template <typename TMessage> class Subscription { public: virtual ~Subscription() {} virtual bool handle(const TMessage &) = 0; }; В некоторых случаях было бы удобно, если бы один кл…
1 ответ

Может ли std::tuple_element дублироваться как универсальный шаблонный аргумент?

Этот вопрос заставил меня задуматься. Иногда полезно получить фактический аргумент из специализации шаблона класса, если он не может определить публичный typedef аргумента. В C++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 */ }…
2 ответа

Как специализировать шаблон класса с параметром шаблона?

Я хотел бы специализировать шаблон класса на параметре шаблона типа параметра шаблона шаблона. Является ли это возможным? Если да, какой синтаксис? #include <type_traits> template <typename T> struct X {}; // primary template template&lt…
1 ответ

Частичная специализация существующей мета-функции с использованием mpl

Может быть, я не все там сегодня, но мне интересно, как заставить это работать. Я хотел бы частично специализировать range_mutable_iterator и range_const_iterator из библиотеки boost, но только для конкретных типов, которые я бы предпочел не упомина…
2 ответа

Как специализировать функции шаблона?

Как переопределить функции специализации шаблона? Я строю матрицу C++11 из векторов векторов. Я уже реализовал векторы (не могу использовать std::vector) и я хочу, чтобы матрица наследовала от myVector<myVector<T>>, myVector<T> раб…
5 ответов

Частичная специализация шаблона C++ - специализация только одной функции-члена

Наткнулся на другую проблему с шаблонами: Проблема: я хочу частично специализировать контейнерный класс (foo) для случая, когда объекты являются указателями, и я хочу специализировать только метод delete. Должно выглядеть так: Код lib template <t…
18 ноя '09 в 17:43
1 ответ

Генерация статической таблицы работает с GCC, но не clang; прослушивается лязг?

Однажды я написал некоторый код, который генерировал статическую таблицу / массив во время компиляции для некоторого метапрограммирования шаблона (идея заключается в том, что строки в стиле C можно создавать во время компиляции (они просто char Масс…
2 ответа

Требуется множественная частичная специализация и полная специализация <> после определения типа

Я использую класс C++ "событие", который позволял одному или двум аргументам в быть вызванными делегатами. В последнее время я добавил поддержку для делегатов, которые не требуют аргументов, однако, когда я специализирую класс на использовании аргум…
14 сен '10 в 08:46