Вопросы по теме 'template-meta-programming'

Извлечь пакет параметров вариативного шаблона и использовать его в другом вариационном шаблоне в мета-функции свойств типа?
Я хочу определить, является ли какой-либо шаблон вариативного класса базой для другого класса. Обычно я бы использовал std :: is_base_of, но я не думаю, что мой вариант использования подходит, и я не уверен, что в std или boost уже есть что-то, чтобы...
1415 просмотров

Добавление квалификатора const в функцию-член
В настоящее время я пишу класс интерфейса, который должен предоставлять доступ к внутренним элементам сложной структуры в виде константных или неконстантных ссылок. Идея состоит в том, что некоторым модулям предоставляется постоянный доступ, а...
1183 просмотров

Найти параметры/параметры/аргументы шаблона без тегов по позиции
Вкратце: я хочу извлечь различные опции из вариативных параметров шаблона, но не только по тегу, а по индексу для тех параметров, которые не известны тег. Мне нравится подход в boost (например, куча или lockfree ), но хотите сделать его...
101 просмотров
schedule 13.04.2024

Создание списка типов всех конструкторов класса
Я пытаюсь реализовать класс ленивой инициализации lazy<T> , который хранит аргументы построения T и использует их для создания T в первый раз, когда это необходимо. В настоящее время я фиксирую аргументы в объекте функции (хранящемся в...
182 просмотров
schedule 16.01.2024

Ошибка при передаче std::map в качестве аргумента шаблона шаблона
Я определил такую ​​​​функцию, в которой есть класс шаблона шаблона template<typename Key, typename Value, template <typename, typename> class Map> struct ForEachOf { void operator()(const Map<Key, Value>& map,...
3469 просмотров

Заполнение массива во время компиляции
Я пытаюсь заполнить массив символов, используя другой массив символов constexpr во время компиляции, но я не понимаю, как это сделать. Я пытаюсь подражать следующему: constexpr char arr1[N] = {/* Permutation of the numbers 0..N-1 */} char...
59 просмотров

С++ 11 - Метапрограммирование шаблонов - Ошибка: параметры шаблона не используются в частичной специализации
я застрял с частичной реализацией шаблона, идея состоит в том, чтобы предоставить класс (построитель), который выбирается во время компиляции с использованием определения класса перечисления, также я хочу указать имя файла и имя класса для управления...
85 просмотров
schedule 25.12.2023

Вложенные классы шаблонов
Я хочу иметь возможность создать общий вложенный шаблон, чтобы я мог найти общий размер всех классов. Для начала представьте классы A, B, C и т. д., каждый из которых имеет mSize член и GetSize() функцию. Я делаю следующий процесс: int...
531 просмотров

Проверить наличие пользовательской перегрузки функции, когда доступна перегрузка шаблона
Я разрабатываю заголовок утилиты, который выкачивает двоичные данные из sf::InputStream 1InputStream.php" rel="nofollow noreferrer"> sf::InputStream . Для простоты использования он содержит одно имя функции, readFromStream , которое имеет...
279 просмотров

Парадокс Рассела в шаблонах C ++
Рассмотрим эту программу: #include <iostream> #include <type_traits> using namespace std; struct russell { template <typename barber, typename = typename enable_if<!is_convertible<barber,...
539 просмотров

Введите псевдоним пакета параметров шаблона
В приведенном ниже примере я пытаюсь создать псевдоним пакета параметров шаблона. В стандарте это невозможно, поэтому я обнаружил, что люди обходят ограничение с помощью кортежа или пустой шаблонной структуры. Однако моя ситуация кажется другой,...
1385 просмотров

метапрограмма шаблона для создания списка элементов для задачи #pragma omp depend
В целях постановки задач OpenMP предлагает зависимость задачи #pragma omp, например: #pragma omp task depend ( dependence-type: locator-list [: iterators-definition]) Может ли метапрограммирование шаблона помочь сгенерировать список...
52 просмотров

Извлечение и изменение параметров шаблона
Я написал следующий класс, чтобы извлечь параметры шаблона класса Base и добавить к нему параметры шаблона класса Derived во время компиляции: template <typename...> struct derived_type_traits; // specialization for the case when Base...
97 просмотров

метафункции, которые принимают две структуры списка
Я начал с шаблонов С++, и я думаю, что мне удалось понять и, например, сделать следующий шаблон struct Nil { enum { head = ERROR }; typedef Nil Next; }; template<int value_ , class Next_ = Nil> struct Cons { enum { head = value_}; typedef...
43 просмотров
schedule 05.09.2022

Могу ли я специализироваться на форвардном заявленном шаблоне?
Могу ли я специализироваться на форвардном заявленном шаблоне? Например: template <typename T> class A; template <> class A<char> { char a[1000]; }; int main() { [[maybe_unused]] A<char> a; return 0; }...
86 просмотров

Способ проверить, что класс имеет оператор() с определенным шаблоном
Я пытаюсь использовать технику SFINAE для проверки - есть ли у класса/структуры operator() с конкретным объявлением шаблона, например (немного упрощенно): struct Simplified { // 1st operator - I need to detect its presence...
68 просмотров