Описание тега function-templates
A function template behaves like a regular function except that works with types specified on the template arguments. The template arguments could be part of the function arguments and/or the function body. Each unique combination of template arguments will become an unique function when instantiated.
1
ответ
Отдельное объявление и определение специализации шаблонной функции: различное поведение для функций-членов и не членов
Я хочу объявить специализацию для шаблона функции, но определю это позже в исходном файле. Рассмотрим следующий пример: .hpp // approach #1 template <typename T> const char *GetTypeName(); template <> const char *GetTypeName<int>()…
24 апр '13 в 22:23
0
ответов
Подстрочный оператор и неявное преобразование в тип указателя
Я читаю шаблоны C++ - полное руководство, 2-е издание и B.2.1 рассказывает о неявном преобразовании подразумеваемого аргумента "this". Тот же пример здесь: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1592.pdf В зависимости от typedef дл…
25 янв '19 в 04:34
0
ответов
Вывести параметр шаблона внешнего класса в вызов функции вложенного класса?
Есть ли способ вывести внешний шаблон во вложенном классе? template<class T> struct A{ struct B{}; }; template<class T> void f(typename A<T>::B b){} // hard to deduce T? int main(){ A<double>::B b; f(b); // no matching functi…
16 янв '19 в 11:34
5
ответов
Почему шаблон функции не может быть частично специализированным?
Я знаю, что спецификация языка запрещает частичную специализацию шаблона функции. Я хотел бы знать обоснование, почему оно запрещает это? Они не полезны? template<typename T, typename U> void f() {} //allowed! template<> void f<int, c…
24 фев '11 в 07:11
0
ответов
Лучшая практика для #ifdef вокруг VS2012 против VS2013 для поддержки C++11?
Какой хороший / лучший способ переключать некоторые объявления функций на основе версии VS? контекст: мне нужно опираться на linux и windows и продолжать работать в тех случаях, когда GCC компилируется нормально, но в VS2012 отсутствуют некоторые фу…
20 янв '14 в 11:29
2
ответа
Специализация шаблона функции Синтаксис агрегирования шаблонных типов
Что касается специализации шаблонов функций, я хотел бы немного помочь с синтаксисом. Ниже приведен упрощенный сценарий: Базовый заголовок: template <typename T> void Foo(T* t) { TRACE("Default Foo impl"); } // <-- default implementation te…
23 янв '18 в 20:57
2
ответа
Сопоставление символов специализации шаблонных функций в разных библиотеках
До сих пор у меня была установка, где определенный шаблон функции getF было объявлено так в заголовках template <typename T> F* getF(); оставляя тело функции неопределенным. Затем в общей библиотеке, getFимеет некоторые специализации.. templat…
22 июн '14 в 23:48
1
ответ
Шаблоны удаления SFINAE, Constexpr и Function: можно ли разделить объявление и определение?
У меня есть проект C++14, который я разрабатываю на CLion 2016.3.4, и один фрагмент кода давал мне ошибки проверки. Я создал минимальный код для воспроизведения проблемы: #include <iostream> #include <type_traits> #include <system_err…
19 мар '17 в 19:18
1
ответ
Передача шаблона typedef в качестве аргумента в шаблон функции
Я пытаюсь передать шаблон typedef в качестве аргумента в шаблон функции. Однако я получаю следующие ошибки: TestTemplates.cpp: 11: ошибка: ожидаемый неквалифицированный идентификатор перед токеном & TestTemplates.cpp: 11: ошибка: ожидаемый неквалифи…
12 авг '12 в 13:47
2
ответа
Создаете свой собственный шаблонизатор JQuery?
У меня был быстрый поиск в stackru... но я не смог найти ничего, что я хотел. Я пытаюсь понять / получить некоторые советы о том, как создать свой ОЧЕНЬ простой движок шаблонов для jQuery. У меня в основном стандартный AJAX-вызов для получения некот…
15 дек '10 в 21:55
1
ответ
Использование typedefs из класса шаблона в функции шаблона (не члена)
Следующее не скомпилируется (в любом случае с gcc 4.2.1 в Linux): template< typename T > class Foo { public: typedef int FooType; }; void ordinary() { Foo< int >::FooType bar = 0; } template< typename T > void templated() { Foo<…
10 мар '10 в 16:34
2
ответа
Специализация шаблона функции и пример Абрахама / Димова
(Я предполагаю знание примера Абрахама / Димова в этом вопросе.) Предположим, что в заголовке есть какой-то сторонний код, подобный этому, который вы не можете изменить: template<class T> void f(T); // (1) base template 1 template<class T&g…
09 фев '13 в 07:39
1
ответ
Ссылка на l-значение удержания шаблона функции и универсальная ссылка
Допустим, у меня есть функция copy: template <typename Buf> void copy( Buf&& input_buffer, Buf& output_buffer) {} В котором input_buffer является универсальной ссылкой и output_buffer является ссылкой на значение l. Reference colla…
06 ноя '18 в 16:19
1
ответ
Перегруженная функция не всегда выбирается перед созданием шаблона
Я создал некоторый код, который использует шаблон функции и перегрузку (не специализацию) этой функции. Когда я вызываю функцию с объектом класса, который является производным от параметра в ней, он использует шаблон, что приводит к ошибке компиляци…
21 дек '18 в 19:00
1
ответ
Шаблон функции и регулярные перегрузки
Следующий код имеет несколько регулярных перегрузок функций и - теперь - шаблонную функцию, предназначенную как универсальную, если перегрузка не подходит. Это почти работает так, как я хочу, за исключением того, что использование производных классо…
30 дек '18 в 12:08
3
ответа
Шаблон функции с необязательным аргументом или перегружен
Я получил класс, содержащий 20 элементов структуры в классическом C-Array. Элементы от 0 до 5 принадлежат к типу A, от 6 до 15 - к типу B, а остальные принадлежат к типу C. Для создания цикла этих элементов я разработал три функциональных шаблона. В…
13 янв '19 в 12:31
1
ответ
Перегрузка оператора преобразования
Я хочу различать оператор преобразования шаблона между &, * и значениями: struct S { template <class T> constexpr operator T() { return value; } template <class T> constexpr operator T&() { return value; } template <class T> co…
25 янв '19 в 19:02
0
ответов
Шаблоны с фиктивной функцией C++
У меня следующая дилемма: someotherlib.h: struct Other { //... template < typename T > void foo(const T& t){ //.. something } }; mylib.cpp: #include <someotherlib.h> int needsFoo() { //... MyType myObj = //.. Other o = //.. o.foo( my…
05 фев '19 в 17:00
1
ответ
Перегрузка функции с шаблоном
У меня есть следующий код. #include <iostream> using namespace std; void print(int& number){ cout<<"\nIn Lvalue\n"; } void print(int&& number){ cout<<"\nIn Rvalue\n"; } int main(int argc,char** argv){ int n=10; print(n)…
10 июн '15 в 21:30
2
ответа
Параметризация и "частичная специализация шаблона функции не допускается"
Это продолжение Что такое эквивалентный параметр функции constexpr? В первоначальном вопросе мы пытаемся ускорить некоторый код, который выполняет сдвиги и вращения под Clang и VC++. Clang и VC++ плохо оптимизируют код, потому что он рассматривает в…
04 сен '16 в 07:46