Template-Meta-Programming – вопросы и ответы

49
голосов
1
ответ
Я хочу построить черты, которые будут отвечать на такие вопросы, как is_vector , is_list и т.д. Проблема заключается в том, что я должен сделать две версии каждого, а именно шаблон шаблона один: te...
4 года, 10 месяцев назад Nikos Athanasiou
91
голос
2
ответа
Я читаю о метапрограммировании шаблонов. Я не мог понять, что означают эти строки; следующий код относится к выполнению метапрограммирования в связанном списке. struct NIL { typedef NIL Head; typed...
2 года, 5 месяцев назад user7865286
60
голосов
2
ответа
Я новичок в метапрограммировании. Я рассмотрел другие вопросы, которые похожи, но никто из них не делает то, что я действительно хочу. Вот моя попытка инвертировать std :: tuple. Основная проблема,...
5 лет назад Ram
49
голосов
2
ответа
Так что это может быть один из тех вопросов, которые "очевидно просты" или "явно невозможны". Но представьте себе простой буферный протокол, в котором данным предшествует байт, указывающий тип. Так...
1 год, 2 месяца назад Convery
79
голосов
2
ответа
Я хочу реализовать статический приведение к одному из классов из набора, переданных в качестве параметров вариационного шаблона: struct Base { int tag_value; }; struct Derived1 : public Base { stat...
1 год, 2 месяца назад cos
59
голосов
1
ответ
Я могу запустить этот код, однако, когда я включаю 3 строки с комментариями, они больше не компилируются и выдает следующую ошибку: 1>d:\git\testprojekt\testprojekt\testprojekt.cpp(41): warning ...
3 года, 8 месяцев назад bodzcount
92
голоса
6
ответов
У меня есть следующий шаблонный класс и (глобальная) переменная его типа: template <typename ClassT> struct ClassTester : public ClassT { typedef ClassT type; }; ClassTester<int> *aaa; ...
8 лет, 2 месяца назад Karel Petranek
91
голос
1
ответ
Я пытаюсь написать класс-оболочку для итератора декартовых произведений, предоставленного Мирандой Конрадо (исходный код можно найти на GitHub ). Для удобства я приведу здесь соответствующие фрагме...
9 месяцев, 1 неделя назад seiji594
70
голосов
1
ответ
Я пытаюсь реализовать селектор классов, функция этого класса заключается в том, чтобы выбрать конкретный признак класса во время компиляции. Но я получаю ошибку. Еще одно требование состоит в том, ...
5 лет, 10 месяцев назад Ricardo_arg
60
голосов
2
ответа
Это упрощение другой проблемы, которую я имею, но она стоит сама по себе. Идея состоит в том, чтобы реализовать функциональные примитивы, подобные map и apply в Схеме. Просто повторим: на схеме, за...
4 года, 2 месяца назад Mats Kindahl
49
голосов
2
ответа
Мне трудно понять, как работают следующие определения шаблонов и определение специализации шаблонов? Для меня factorial<34> или factorial<T-1> выглядят странно! Например: factorial<T...
8 лет назад q0987
49
голосов
3
ответа
Я пытаюсь написать механизм, чтобы определить, является ли тип указателем типа. Под этим я подразумеваю, что это происходит с помощью operator*() и operator->() . У меня есть три различные струк...
1 год, 10 месяцев назад Timo
61
голос
2
ответа
Чтобы облегчить жизнь при решении сложной системы PDE, я пишу обертку C++ вокруг (соответствующей части) C-числовой библиотеки. При работе с несколькими неизвестными библиотека просто назначает мас...
6 лет, 8 месяцев назад Saran
70
голосов
0
ответов
Этот код, принятый другими компиляторами, не работает с g++-4.1 : template<typename T> struct foo; template<template<typename> class ClassTemplate, typename Arg> struct foo<Cla...
7 лет, 4 месяца назад Jared Hoberock
85
голосов
2
ответа
Вот что я хочу сделать; отправляя весь код, потому что он не слишком длинный, а также для демонстрации конкретной задачи, которую я пытаюсь решить. В принципе, мне нужен способ итерации значений из...
1 год, 2 месяца назад Violet Giraffe
60
голосов
1
ответ
Я решил эту проблему без вариативных шаблонов, но хотел посмотреть, есть ли более чистое решение, которое их использует. Я экспортирую большое количество классов в движок Google V8 Javascrpt и созд...
5 лет, 6 месяцев назад Jerry
69
голосов
2
ответа
Я хотел бы разделить пакет параметров шаблона. Что-то вроде этого. Как я мог сделать это? template< typename... Pack > struct TypeB : public TypeA< get<0, sizeof...(Pack)/2>(Pack...)...
9 месяцев, 3 недели назад user2099460
77
голосов
2
ответа
Я знаю, что С++ не поддерживает рефлексию, но я просмотрел бумагу Отражение поддержки с помощью метапрограмм шаблона , но не понял как это достигается. Будет ли у кого-нибудь больше деталей или при...
7 лет, 5 месяцев назад Avinash
109
голосов
2
ответа
Я пытаюсь выполнить следующее, используя метапрограммирование шаблона С++. Я хочу создать список типов, а затем собрать эти типы вместе и выполнить дальнейшую компиляцию в списке. Так, например: fo...
6 лет, 5 месяцев назад Alex Flint
129
голосов
1
ответ
Учитывая многомерный массив с формой [A][B][C][D] , но сохраненный как 1-мерный массив с длиной [A*B*C*D] . Я хочу использовать метапрограммирование шаблонов для упрощения вычисления индекса. Индек...
2 года, 6 месяцев назад Patwie
59
голосов
1
ответ
Этот вопрос состоит из двух частей, обозначенных (A) через... ах... (C). template< unsigned a > struct Outer { /* (A) Provide a match if the template parameter of Inner is the same as Outer. ...
4 года, 2 месяца назад mkobierski
78
голосов
2
ответа
Я пытаюсь использовать SFINAE для определения того, был ли тип, переданный как аргумент шаблона T, иметь T:: operator() (P const &), где P также является аргументом шаблона. Я смоделировал свое...
2 года, 11 месяцев назад batbrat
86
голосов
1
ответ
проблема Предположим, у нас есть (вымышленный) шаблон класса C<T> с условно явным конструктором по умолчанию. Конструктор по умолчанию должен быть явным тогда и только тогда, когда std::is_sa...
9 месяцев, 3 недели назад L. F.
84
голоса
1
ответ
Я пытаюсь преобразовать литеральную строку С++ в экземпляр следующего шаблона: template <char ... C> struct string_literal { typedef string_constant type; static constexpr const char value[si...
3 года, 11 месяцев назад Ricardo Andrade
49
голосов
1
ответ
Я хочу создать класс c++, в который я могу добавить элементы типов (int, long, double, string). Я очень новичок в программировании шаблонов в c++. Я следую этому руководству: https://eli.thegreenpl...
2 года, 2 месяца назад user3636955
59
голосов
4
ответа
По типу "min" я имею в виду тип, сравниваемый меньше , чем все в соответствии с функцией времени компиляции, например sizeof У меня есть проект проект, который будет представлен первым, и рассмотри...
5 лет, 8 месяцев назад Nikos Athanasiou
61
голос
2
ответа
Я пытаюсь создать класс шаблона, который выполняет заданную пользователем функцию N -ary с аргументами типа C. Для этого мне нужно каким-то образом указать тип этой функции на основе параметров шаб...
5 лет, 3 месяца назад DaveStance
69
голосов
2
ответа
В таком типе, как неспециализированная структура шаблона pointer_traits (т.е. template <class Ptr> struct pointer_traits ), существует шаблон псевдонима участника rebind , который определен к...
3 года назад Mona the Monad
123
голоса
3
ответа
Мне нужно знать точное количество аргументов лямбды. Мне плевать на их типы, мне просто нужен счет. auto lambda0 = [&]() { ... }; auto lambda1 = [&](int32_t a) { ... }; auto lambda2 = [&...
1 год назад Rick de Water
68
голосов
0
ответов
В одном из моих проектов мне нужно определить коэффициенты преобразования довольно сложных единиц. Я смог написать статическую функцию преобразования в случае статически определенных единиц, исполь...
3 года, 1 месяц назад Aleph0
50
голосов
1
ответ
Недавно я начал играть с метапрограммированием шаблонов в C++ и пытался оценить длину строки в стиле C. У меня был некоторый успех с этим битом кода template <const char *str, std::size_t index&...
3 года, 6 месяцев назад lennoxho
86
голосов
1
ответ
В чем смысл стирания типа из списка типов в мета-программировании c++. Можно ли предложить любой простой пример. class null_typelist {}; template <class H, class T> struct typelist { typedef ...
7 лет назад vinay patel
96
голосов
2
ответа
У меня есть функция шаблона, в которой тип перечисления преобразуется в его базовый тип, который отлично работает, но я написал перегрузку, которая должна принимать целое число и возвращаться сама,...
4 года, 5 месяцев назад Adrian
97
голосов
1
ответ
Я работаю над портированием кода Джулии на C++ и столкнулся с проблемой. Хуже того, я не очень хорошо знаком с номенклатурой C++, так что не смог выйти из моего пути. В основном, я пытаюсь понять, ...
3 года, 6 месяцев назад alto
92
голоса
3
ответа
Я пытаюсь реализовать мета-функцию шаблона С++, которая определяет, может ли тип быть вызванным из входных аргументов метода. то есть. для функции void foo(double, double) мета-функция вернет true ...
3 года, 2 месяца назад keith
77
голосов
3
ответа
Еще одна проблема с шаблонами! Я пытаюсь получить метод шаблона, который будет выводить объект, если он имеет перегрузку для оператора < <. У меня почти все работает, и реализовано enable_if,...
8 лет, 8 месяцев назад The-Snake
61
голос
2
ответа
Есть ли способ условно вызывать функцию с использованием шаблонов c++ (генерация временного кода компиляции), где, основываясь на типе аргументов, логика будет отличаться для каждого из вариантов н...
3 года, 7 месяцев назад user3279954
50
голосов
1
ответ
Мне нужно решить следующую задачу, которую я хотел бы автоматизировать с помощью Regex: Я должен соответствовать этим двум сопоставлениям: GetSQLParameter("@switch", SqlDbType.TinyInt, 1), _ GetSQL...
5 лет, 11 месяцев назад M.F05051985
97
голосов
1
ответ
Можно ли написать одну шаблонную функцию для увеличения (числовых) полей разных структур? Например: struct Color { ubyte a,r,g,b; } struct Point { double x, y; } Я пробовал что-то вроде этого: T up...
7 лет, 8 месяцев назад YGL
77
голосов
1
ответ
Я хочу предварительно создать массив указателей на функции элементов-членов, которые будут индексироваться с использованием переменной, определенной во время выполнения другим классом. Затем функци...
4 года, 3 месяца назад ggs
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема