Вопросы, помеченные тегом «templates»

Тег templates используется в нескольких контекстах: универсальное программирование (особенно C ++) и создание данных / документов с использованием механизмов шаблонов. При использовании этого тега для сложных вопросов реализации - укажите язык кода, на котором написана реализация.
avatar
Nima Ghorab
2 апреля 2022 в 18:35
194
3

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

Я обнаружил что-то странное в компиляторе MSVC. определение шаблона функции помещается в сборку, а оптимизация устраняет необходимость в них. Кажется, что Clang и GCC успешно удаляют определение функции, а MSVC — нет. Можно ли это исправить? main.cpp: #include...
avatar
PK09
9 августа 2021 в 01:41
125
1

C++ GTest/GMock для шаблонов классов: вызывается настоящий метод вместо указанной фиктивной реализации

Вот упрощенный пример (из gMock Cookbook) шаблона класса, который я хочу имитировать: class StackInterface { public: virtual ~StackInterface(); virtual int GetSize() const { return 3; } }; template<typename Elem> class MockStack : public...
avatar
joaocandre
8 августа 2021 в 20:46
57
1

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

Я пытаюсь использовать признаки типа, чтобы предоставить пару перегрузок для конкретной функции, чтобы мне не нужно было указывать параметр шаблона при вызове указанной функции, и он мог работать для любого типа данных и разных типов. контейнеров: #include...
avatar
selamba
8 августа 2021 в 02:13
47
1

Шаблоны C++ с указателем на ссылку

У меня есть следующий статический метод структуры: template<typename Edge1, typename Edge2, typename... Edges> requires std::derived_from<Edge1, Edge> && std::derived_from<Edge2, Edge> && (std::derived_from<Edges, Edge>...
avatar
amordo
7 августа 2021 в 12:12
295
1

Рекурсивная реализация шаблона превысила ошибку в dtor, но не в ctor. Почему?

Попробуйте clang++ и g++, одинаковый результат для обоих.fatal error: recursive template instantiation exceeded maximum depth template<class T> struct Bar { ~Bar() { if (ptr) { delete ptr; } } Bar<Bar<T>> * ptr{nullptr}; }; int main() {...
avatar
Suganya
7 августа 2021 в 11:03
29
0

Редактор появляется дважды при создании фрагментов опыта и открывает его.

когда я создаю новый тип шаблона для фрагментов опыта и создаю фрагменты опыта с использованием этого шаблона, возникает такая проблема, не уверен, что я упускаю. он выглядит нормально при создании с использованием шаблонов по умолчанию от We.Retail Изображение двух...
avatar
Armin Montigny
7 августа 2021 в 10:30
111
2

Как создать многомерный массив std::array с помощью шаблона?

Как я могу создать многомерный объект std::array типа Type с (конечно) известными начальными размерами constexpr с некоторым умным вариативным шаблоном "MDA". Количество измерений должно быть переменным. В конце я хочу написать: MDA<int,3,4,5,6> a4d{}; и...
avatar
Karen Baghdasaryan
7 августа 2021 в 10:24
99
1

Встроенная лямбда-переменная, встроенная функция и встроенная функция шаблона с автоматическим выводом типа

Предположим, я хочу объявить встроенную функцию, которая будет принимать аргумент произвольного типа. Я думаю, что это можно сделать следующими способами. ////// inline auto const myfunc = [&](const auto& val){return something(val);}; ////// inline auto...
avatar
kabibe sadagat
7 августа 2021 в 04:55
37
1

Безопасно ли разделять объявление и определения вашего шаблонного класса в разных файлах заголовков?

Я пытаюсь создать библиотеку для школьной работы, и мне интересно, безопасно объявлять <83373131>класс<8337311>13717 > on the main header file containing the class definition and method declarations, but then separating the method определения в файле...
avatar
Chuah Hao Min
7 августа 2021 в 01:37
42
0

Класс шаблона с массивом с несколькими пользовательскими входами

Я пытаюсь создать программу, которая принимает идентификатор и оценки каждого учащегося с пользовательским вводом, используя класс шаблона. Но когда я пытаюсь создать массив учеников, возникают эти ошибки. darkxith@DESKTOP-2UFE545:~/proA2$ g++ test.h test.cpp -o...
avatar
pbuchheit
6 августа 2021 в 20:31
1822
1

Как использовать шаблоны Freemarker для вывода JSON

У меня есть приложение, которому необходимо обработать некоторые данные и вывести их в виде файла JSON. Вместо того, чтобы обрабатывать все вручную, я подумал, что могу использовать библиотеку шаблонов для структурирования вывода. Freemarker, казалось, предлагал то,...
avatar
hmhuang
6 августа 2021 в 14:00
89
1

Константа шаблона времени выполнения C++

Я пытался создать определяемый пользователем тип контейнера с using и закрытыми членами в классе, которые не являются константами времени компиляции. Это недопустимо, и компилятор пожаловался на него. Эти частные константы-члены будут инициализированы только во время...
avatar
Farhad Mohammadi
6 августа 2021 в 13:21
75
3

Условный тип, обусловленный операционной системой

Что вы предлагаете избегать использования псевдонимов типов в этом случае? // this is a header file, sample.h #ifdef _WIN32 using default_type = int; #else using default_type = float; #endif template<typename T = default_type> class Sample { }; Я не хочу...
avatar
Lushawn
6 августа 2021 в 12:52
222
1

Внедрение шаблона администрирования COREui в соответствии с демонстрацией

Я изучаю веб-разработку и пытаюсь использовать административный шаблон COREui 4.0.1 Bootstrap в существующем проекте Symfony 5.3 вместо стандартных компонентов и утилит Bootstrap 5. Я пытаюсь сделать так, чтобы страница выглядела как...
avatar
Raildex
6 августа 2021 в 07:41
57
1

Можно ли опустить параметр шаблона, если у меня есть тип в левой части задания?

Я хочу написать функцию, которая возвращает предварительно выделенный вектор. Так как это должно работать для любого вектора, я использую шаблон. Мой вопрос: можно ли вывести параметр шаблона вызова функции с параметром шаблона левого вектора? template<typename...
avatar
陈泽霖
6 августа 2021 в 02:36
142
1

почему type_identity имеет значение?

Я знаю, что объект lambda не является объектом std::function, поэтому я понимаю, что это не сработает: template <typename ...args_t> void func(std::function<void(args_t...)> function_, args_t ...args){ /// do something here } void test() { ...
avatar
RippeR
5 августа 2021 в 20:56
83
1

Шаблон, принимающий все указатели функций-членов (включая CV-qualified и ref-qualified) [дубликат]

Я хочу написать шаблон, который принимает указатель на функцию-член (возможно, с указанием CV и/или с указанием ссылки), а также сопоставляет все соответствующие типы (тип возвращаемого значения, тип класса и типы аргументов). Простая версия может выглядеть...
avatar
uray
5 августа 2021 в 18:28
71
1

Обходной путь С++ для шаблонного полиморфизма

class Base{ public: template <typename T> T getValueAs() { //should return (T)this->getValue() } template <typename T> void setValueFrom(T val) { //should call this->setValue((Impl::value_type)val) } ...
avatar
Lew Wei Hao
5 августа 2021 в 14:57
134
1

Не могу создать boost::shared_ptr из этого

Скажем, у меня есть следующий абстрактный класс A. Теперь я пытаюсь создать shared_ptr для A изнутри класса A. Итак, в A у меня есть следующая функция: class A { void A::setupArguments() const { ext::shared_ptr<A> ptr =...
avatar
Frosty
5 августа 2021 в 11:47
56
1

Псевдоним шаблона с переменным числом аргументов без аргументов

Я нашел несколько похожих тем, но ни одна из них не дает прямого ответа на мою конкретную проблему. У меня есть класс (назовем его Foo) в некоторой библиотеке, которую мы используем в нескольких модулях. Теперь мне нужно преобразовать этот класс в вариативный шаблон...