Вопросы по теме 'crtp'

CRTP + вариативный шаблон + извлечение параметров подкласса CRTP
В настоящее время я реализую общий класс событий. Обработчики событий имеют параметр отправителя и переменное количество аргументов событий. Итак, объявление класса событий выглядит следующим образом: template<typename SENDER , typename......
686 просмотров
schedule 29.11.2022

Объявление функции с той же сигнатурой функции данного параметра шаблона
Я пишу класс-оболочку, который скрывает реализацию. Как я могу получить подпись функции данного параметра шаблона? template <class T> struct wrapper { static typename std::result_of<&T::impl>::type call(...) { // this function...
152 просмотров
schedule 28.09.2023

Использование CRTP с виртуальным наследованием
У меня есть иерархия узлов, где может возникнуть «алмаз». Каждый узел должен быть клонируемым, но я не хочу писать метод клонирования для каждого узла. Поэтому я использую CRTP. class Node { public: Node(){} Node(Fill*) { }...
1481 просмотров
schedule 03.06.2023

Любопытно повторяющийся шаблон шаблона (CRTP) и производные аргументы конструктора
Я использую любопытный повторяющийся шаблон шаблона для создания общего указателя следующим образом (ниже). В Derived :: create (...) Visual Studio IntelliSense показывает доступные аргументы (Args && ... args). Как передать список аргументов...
833 просмотров

Параметр функции производного класса как ссылка на базовый класс вызывает C2678
Я создал класс «Производный», который является производным классом «Базовый». Он использует CRTP. Базовый класс содержит один унарный и один бинарный оператор. Производный класс реализует эти функции виртуального оператора. template...
264 просмотров
schedule 25.02.2022

Семантика перемещения, любопытно повторяющийся шаблон шаблона и утечка памяти
Я реализовал вариант любопытно повторяющегося шаблона шаблона: #include "stdafx.h" #define _CRTDBG_MAP_ALLOC #include <crtdbg.h> #include <stdlib.h> template<typename T> struct Indexed { private: static int s_maxIndex;...
68 просмотров

Как реализовать кучу похожих классов
Моя задача — определить класс спецификации устройства, который состоит из различного количества свойств. Например, спецификация Устройство1 содержит Свойство1, Свойство2. Некоторые другие Device2 содержат только Property1, спецификация DeviceX...
100 просмотров
schedule 22.06.2022

Как вывести тип в CRTP?
Я хочу реализовать CRTP в шаблоне С++. Код выглядит следующим образом: template <typename T> class A{ public: typedef typename T::Scalar Scalar; }; template <typename T> struct B:public A<B<T> > { public: typedef T...
99 просмотров
schedule 18.01.2023

Ошибка при объявлении статического экземпляра constexpr производного класса в базовом классе CRTP
Я создаю тип контейнера и пытаюсь повторно использовать как можно больше кода, используя Удивительно повторяющийся шаблон шаблона . Вот базовый код, который в некоторых случаях компилируется, а в других нет: template<typename T, size_t N,...
246 просмотров
schedule 11.11.2023

Как исправить предполагаемое отсутствие явного объявления экземпляра при компиляции CRTP Singleton с Clang?
Мы используем любопытно повторяющийся шаблон шаблона для реализации синглтонов. . Однако в последних версиях Clang мы получаем предупреждение -Wundefined-var-template. Предлагаемое исправление заключается в добавлении «явного объявления создания...
5011 просмотров
schedule 06.03.2023

CRTP вызывает segfault
У меня есть чистый виртуальный класс Interface : class Interface { public: virtual ~Interface() noexcept; virtual void open()=0; virtual void close()=0; protected: explicit Interface(const string params); string params_;...
115 просмотров
schedule 30.09.2023

Как самостоятельно зарегистрировать экземпляры класса с помощью CRTP?
У меня есть реестр для лямбда-функций, связанных с конкретным CommandId , где зарегистрированная функция должна создать конкретный экземпляр класса исполнителя команд и предоставить ему некоторые данные: CommandId.h #include <cstdint>...
541 просмотров

clang vs gcc CRTP: переменная constexpr не может иметь нелитеральный тип
У меня есть класс шаблона CRTP: template <typename S> class Base { public: constexpr static S NOT_SET{0}; }; struct Derived : public Base<Derived> { }; Clang (5.0.0) не принимает это: 5 : <source>:5:24: error:...
1195 просмотров
schedule 23.03.2023

Как вызвать определенный метод шаблона в дочернем классе (наследование с CRTP - решение)
У меня есть шаблон, похожий на стратегию, где интерфейс стратегии — IFilter , контекст — класс Context , Filter1 , Filter2 . .. и т. д. являются конкретными стратегиями, CommonFilter является промежуточным слоем между стратегией и конкретной...
106 просмотров
schedule 05.02.2024

Альтернативы CRTP в Java
Шаблон CRTP позволяет имитировать так называемый самотипы в Java , e. грамм.: abstract class AbstractFoo<SELF extends AbstractFoo<SELF>> implements Comparable<SELF> { @Override public final int compareTo(final...
683 просмотров
schedule 20.11.2023

Нереализованная производная функция в CRTP
Я работаю над созданием оболочки, чтобы иметь возможность легко переносить будущий код на разные серверные механизмы рендеринга. В настоящее время мы работаем в GDI. В настоящее время я реализую виртуальные функции на абстрактном бэкэнде, но я хотел...
115 просмотров
schedule 31.10.2023

Разрешение порядка инициализации CRTP
У меня есть некоторая зависимость от CRTP, которую я не знаю, как решить. В идеале я хочу поместить в базовый класс как можно больше вещей, таких как функции, поэтому мне не нужно переопределять их для каждого класса, который их наследует. Кажется,...
64 просмотров
schedule 15.01.2024

Преимущества CRTP по сравнению с абстрактным классом?
Я новичок в концепции «любопытно повторяющегося шаблона шаблона», и я читаю о его возможных вариантах использования здесь . В этой статье автор описывает простой случай, когда у нас есть два или более классов с некоторой общей функциональностью:...
271 просмотров
schedule 12.11.2023

Проверка наличия в списке определенных обязательных и определенных необязательных элементов
Я пытался создать модульный тест, который бы удостоверился, что список (или, в более общем смысле, контейнер ) содержит определенные обязательные элементы, позволяя ему также содержать некоторые дополнительные необязательные элементы (но, опять...
244 просмотров
schedule 23.07.2022

Неправильная перегрузка оператора, CRTP, C++
Я использую CRTP для перегрузки оператора. У меня есть базовая структура . template<int S, typename T, typename C> struct ColorModel { constexpr static int SPACE = S; ColorModel() { std::fill(begin(), end(), 0); }...
50 просмотров