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

1 ответ

Явная специализация для оператора перегрузки '<<' (сдвиг влево)

Допустим, у меня есть класс, для которого я хочу перегрузить оператор на основе типа enum: #include &lt;iostream&gt; enum class option : char { normal, do_something_stupid }; class foo { public: int i; explicit foo(int a=0) : i(a) {}; /* overload op…
1 ответ

C++ явная специализация возвращаемого типа шаблона

Это продолжение этого (более общего) вопроса: предыдущий вопрос. Частичный ответ на настоящий вопрос дается здесь: частичный ответ на настоящий вопрос. Я заинтересован в явной специализации возвращаемого типа на основе аргумента шаблона. Хотя привед…
1 ответ

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

Для удобства чтения я хотел бы специализировать шаблон функции, близкий к определению класса, который объявлен внутри пространства имен: #include &lt;iostream&gt; template&lt;typename T&gt; void my_function() { std::cout &lt;&lt; "my_function defaul…
6 ответов

Как мне сделать эту явную специализацию?

Возможен ли следующий дизайн?: template &lt;typename T&gt; class Test{ public: template &lt;typename Z&gt; void doSomething(); //rest of things private: T obj; //some things }; Теперь, если бы это было возможно, я бы сделал несколько явных специализ…
25 ноя '10 в 08:01
1 ответ

Расширение пространства имен std посредством частичной специализации шаблона

Насколько я знаю, нам разрешено (за некоторыми исключениями, которые я не буду здесь упоминать) "расширять" namespace std полностью специализируясь std функция шаблона, такая как std::swapт.е. namespace std { template&lt;&gt; void swap&lt;Foo&gt;(Fo…
2 ответа

Вложенный шаблон специализации

У меня есть шаблонный класс, который нуждается в специализированном конструкторе, когда параметры шаблона того же типа, что и класс. Код ниже не скомпилируется. Каков правильный синтаксис для указания использования определенного конструктора, когда …
1 ответ

Почему я получаю недостающие символы для явной специализации шаблона в статической библиотеке?

Если я скомпилирую следующий код: // // g++ static.cpp -o static.o // ar rcs libstatic.a static.o // #include &lt;iostream&gt; template &lt; typename T &gt; struct TemplatedClass { void Test( T value ) { std::cout &lt;&lt; "Foobar was: " &lt;&lt; va…
21 окт '10 в 15:59
1 ответ

Шаблон класса специальная функция-член явная специализация

В C++ iso 2003/2011 [temp.expl.spec]/4 написано, что Функция-член, класс-член или статический член данных шаблона класса могут быть явно специализированы для специализации класса, для которой неявно создается экземпляр; в этом случае определение шаб…
1 ответ

Как симметрично реализовать сериализацию и десериализацию шаблонных функций в C++

Я хочу написать серию шаблонных функций для сериализации и десериализации объектов. Я закончил сериализацию и все работает: #ifndef SERIALIZE_H #define SERIALIZE_H #include &lt;string&gt; #include &lt;vector&gt; #include &lt;unordered_set&gt; #inclu…
2 ответа

Явная специализация члена

g++ 3.4.5 принимает этот код: template &lt;typename T&gt; struct A { static const char* const str; }; struct B {}; typedef A&lt;B&gt; C; template&lt;&gt; const char* const C::str = "B"; // Equivalent to following? // template&lt;&gt; const char* con…
1 ответ

Явная специализация шаблона функции (которая является членом шаблона класса) приводит к ошибке "частичная специализация не допускается", почему?

Я работаю над Visual Studio 2015 community edition скажем, у меня есть простой класс, подобный этому: (Пример ниже "должен быть" компилируемым, потому что он включает в себя все необходимые вещи, к сожалению, он выдает ошибку). #include &lt;stdexcep…
29 июл '17 в 04:06
3 ответа

Явная специализация шаблона - несколько определений

Я сделал явные специализации раньше, я просто не могу понять, почему это не работает: StringUtils.hpp #ifndef AYC_STRINGUTILS_HPP #define AYC_STRINGUTILS_HPP #include &lt;string&gt; class StringUtils { public: template &lt;typename T&gt; static std:…
1 ответ

Нормальная функция не перезаписывает шаблонную функцию

Я должен использовать внешнюю библиотеку, но получаю "ошибку множественного определения" из следующей функции шаблона и ее явной специализации, если ее вызывают с помощью std::string. template &lt;typename T&gt; void foo(T&amp; value); template &lt;…
2 ответа

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

У меня есть шаблон класса, который выглядит примерно так: template&lt;class T&gt; class C { void A(); void B(); // Other stuff }; template&lt;class T&gt; void C&lt;T&gt;::A() { /* something */ } template&lt;class T&gt; void C&lt;T&gt;::B() { /* some…
26 сен '09 в 17:20
0 ответов

Шаблон специализирующей функции на initializer_list не работает?

Я знаю, что специализировать шаблоны функций неправильно Этот вопрос вне любопытства. скажи у меня есть шаблон функции template&lt;typename T&gt; void foo(T){} и я специализируюсь на этом template&lt;&gt; void foo(std::initializer_list&lt;int&gt;){}…
0 ответов

Явная специализация членов шаблонов классов

Пытаясь закрепить логику явной специализации членов шаблонов классов, я написал следующий код: #include &lt;iostream&gt; using namespace std; template&lt;class T&gt; class X { public: template&lt;class U&gt; class Y { public: template&lt;class V&gt;…
21 янв '14 в 16:23
6 ответов

Выбор явной специализации класса на основе производного типа

Привет у меня проблемы с выбором правильной версии шаблонного класса, который имеет явную специализацию. Я хочу выбрать специализацию, используя производный класс класса, используемого для специализации. Сценарий таков: #include &lt;stdio.h&gt; clas…
22 янв '10 в 16:38
2 ответа

"ожидаемый инициализатор до '<' токена" при попытке специализации члена шаблона

Я пытаюсь определить элемент шаблона внутри класса шаблона. Вот фрагмент заголовочного файла: template &lt;typename Type&gt; class Queue { private: // class scope definitions // Node is a nested structure definition local to this class struct Node {…
1 ответ

Явная специализация 'CheckIntMap<>' после создания

template&lt;typename... U&gt; constexpr int CheckIntMap(const char *szStr, int nDefaultInt, const char *szOptStr1, int nOptInt1, U&amp;&amp;... u) { return (CheckIntMap(szStr, nDefaultInt, szOptStr1, nOptInt1) == nOptInt1) ? nOptInt1 : CheckIntMap(s…
1 ответ

Статическое определение шаблона и явные ошибки конкретизации специализации в MSVC

Мне интересно, почему следующий код прекрасно работает в gcc #include &lt;iostream&gt; using namespace std; template&lt;typename T&gt; struct F { static T const value; }; template&lt;&gt; struct F&lt;int&gt; { // Specialization static int const valu…