Вопросы по теме 'template-meta-programming'
Извлечь пакет параметров вариативного шаблона и использовать его в другом вариационном шаблоне в мета-функции свойств типа?
Я хочу определить, является ли какой-либо шаблон вариативного класса базой для другого класса. Обычно я бы использовал std :: is_base_of, но я не думаю, что мой вариант использования подходит, и я не уверен, что в std или boost уже есть что-то, чтобы...
1415 просмотров
schedule
30.08.2022
Добавление квалификатора const в функцию-член
В настоящее время я пишу класс интерфейса, который должен предоставлять доступ к внутренним элементам сложной структуры в виде константных или неконстантных ссылок. Идея состоит в том, что некоторым модулям предоставляется постоянный доступ, а...
1183 просмотров
schedule
21.10.2023
Найти параметры/параметры/аргументы шаблона без тегов по позиции
Вкратце: я хочу извлечь различные опции из вариативных параметров шаблона, но не только по тегу, а по индексу для тех параметров, которые не известны тег. Мне нравится подход в 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 просмотров
schedule
16.09.2022
Заполнение массива во время компиляции
Я пытаюсь заполнить массив символов, используя другой массив символов constexpr во время компиляции, но я не понимаю, как это сделать.
Я пытаюсь подражать следующему:
constexpr char arr1[N] = {/* Permutation of the numbers 0..N-1 */}
char...
59 просмотров
schedule
21.01.2024
С++ 11 - Метапрограммирование шаблонов - Ошибка: параметры шаблона не используются в частичной специализации
я застрял с частичной реализацией шаблона, идея состоит в том, чтобы предоставить класс (построитель), который выбирается во время компиляции с использованием определения класса перечисления, также я хочу указать имя файла и имя класса для управления...
85 просмотров
schedule
25.12.2023
Вложенные классы шаблонов
Я хочу иметь возможность создать общий вложенный шаблон, чтобы я мог найти общий размер всех классов. Для начала представьте классы A, B, C и т. д., каждый из которых имеет mSize член и GetSize() функцию. Я делаю следующий процесс:
int...
531 просмотров
schedule
10.04.2024
Проверить наличие пользовательской перегрузки функции, когда доступна перегрузка шаблона
Я разрабатываю заголовок утилиты, который выкачивает двоичные данные из sf::InputStream 1InputStream.php" rel="nofollow noreferrer"> sf::InputStream . Для простоты использования он содержит одно имя функции, readFromStream , которое имеет...
279 просмотров
schedule
29.10.2023
Парадокс Рассела в шаблонах C ++
Рассмотрим эту программу:
#include <iostream>
#include <type_traits>
using namespace std;
struct russell {
template <typename barber,
typename = typename enable_if<!is_convertible<barber,...
539 просмотров
schedule
20.07.2022
Введите псевдоним пакета параметров шаблона
В приведенном ниже примере я пытаюсь создать псевдоним пакета параметров шаблона.
В стандарте это невозможно, поэтому я обнаружил, что люди обходят ограничение с помощью кортежа или пустой шаблонной структуры. Однако моя ситуация кажется другой,...
1385 просмотров
schedule
22.02.2024
метапрограмма шаблона для создания списка элементов для задачи #pragma omp depend
В целях постановки задач OpenMP предлагает зависимость задачи #pragma omp, например:
#pragma omp task depend ( dependence-type: locator-list [: iterators-definition])
Может ли метапрограммирование шаблона помочь сгенерировать список...
52 просмотров
schedule
06.07.2022
Извлечение и изменение параметров шаблона
Я написал следующий класс, чтобы извлечь параметры шаблона класса Base и добавить к нему параметры шаблона класса Derived во время компиляции:
template <typename...> struct derived_type_traits;
// specialization for the case when Base...
97 просмотров
schedule
14.09.2022
метафункции, которые принимают две структуры списка
Я начал с шаблонов С++, и я думаю, что мне удалось понять и, например, сделать следующий шаблон
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 просмотров
schedule
25.02.2024
Способ проверить, что класс имеет оператор() с определенным шаблоном
Я пытаюсь использовать технику SFINAE для проверки - есть ли у класса/структуры operator() с конкретным объявлением шаблона, например (немного упрощенно):
struct Simplified
{
// 1st operator - I need to detect its presence...
68 просмотров
schedule
01.11.2022