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

Какие самые крутые примеры метапрограммирования вы видели в C++?
Какие самые крутые примеры метапрограммирования вы видели в C++? Какие практические применения метапрограммирования вы видели в C++?
9181 просмотров

получение const_iterator из итератора
Возможный дубликат: Получение const_iterator из итератора Я хочу написать метафункцию, которая возвращает соответствующий const_iterator из iterator template <class Iterator> struct get_const_iterator { typedef ???...
1847 просмотров

Как определить, является ли тип лямбда-выражением во время компиляции?
Предположим, у меня есть тип my_struct , содержащий переменную-член f , которая является функцией. f может быть лямбда-функцией С++ 11. Поскольку присваивать лямбда-объектам незаконно, я хотел бы реализовать оператор присваивания my_struct...
1657 просмотров
schedule 12.11.2023

Почему type_traits реализуются со специализированными структурами шаблонов вместо constexpr?
Есть ли причина, по которой стандарт определяет их как шаблон struct s вместо простого логического constexpr ? В дополнительном вопросе, на который, вероятно, будет дан хороший ответ на основной вопрос, как можно было бы делать enable_if вещи с...
2355 просмотров

Как работает этот шаблон класса has_member?
Я пытаюсь понять, как работает следующий шаблон класса (взято из здесь ), но я не мог понять это правильно: template <typename Type> class has_member { class yes { char m;}; class no { yes m[2];}; struct BaseMixin {...
1692 просмотров
schedule 18.01.2024

Определите, является ли тип контейнером STL во время компиляции
Я хотел бы написать шаблон, который будет определять, является ли тип контейнером stl во время компиляции. У меня есть следующий фрагмент кода: struct is_cont{}; struct not_cont{}; template <typename T> struct is_cont { typedef not_cont...
19045 просмотров

Функция вызова во время инициализации программы
Поэтому я хотел бы иметь возможность вызывать функцию во время инициализации. Это пустая функция, но я хочу, чтобы побочные эффекты (в данном случае обновление таблицы фабричных функций) были на месте к моменту вызова main() . Сейчас я просто...
232 просмотров

Что случилось с моими членами класса условного шаблона SFINAE redux:?
Я новичок в написании кода метапрограммирования шаблона (а не просто в его чтении). Так что я столкнулся с некоторыми проблемами нубов. Один из них довольно хорошо резюмирован в сообщении, не относящемся к SO, под названием " Что случилось с моим...
2543 просмотров

Проблема с метафункцией для определения класса-в-шаблоне-класса
У меня есть код со следующей структурой: template <typename T> struct Foo { struct Bar { int data; }; }; Я хочу написать метафункции, которые сообщат мне, является ли тип Foo или Bar. Первый простой: template <typename...
302 просмотров

TMP: как обобщить декартово произведение векторов?
Существует отличное решение C++ (на самом деле 2 решения: рекурсивное и нерекурсивное) для декартово произведение вектора целочисленных векторов . В целях иллюстрации/простоты давайте просто сосредоточимся на нерекурсивной версии . Мой...
2983 просмотров

ошибка аргумента метафункции операции преобразования boost::mpl
В веб-документации Boost MPL , в нем говорится о передаче классов метафункций в качестве аргументов для boost::mpl::transform. Аргумент метафункции в этом случае должен быть какой-то операцией, выполняемой над mpl::ForwardSequence. Однако при...
784 просмотров

Проблемы с метапрограммированием шаблона делегата
Приведенный ниже код был адаптирован другим программистом из кода Yingle Jia и мне нужно портировать его на Linux. Он отлично компилируется в VS2010, но когда я пытаюсь собрать в Ubuntu с gcc 4.6.3, он показывает ошибки на template <class R...
163 просмотров

Лучший способ (или обходной путь) специализации псевдонима шаблона
В настоящее время я реализую крошечную библиотеку вычислений времени компиляции на основе метапрограммирования. Если бы я определил базовый класс для операторов, который имеет определение типа результата (я решил использовать интегральные оболочки,...
2887 просмотров

Получение элемента кортежа по типу (до C++0x)
У меня есть шаблонный класс, который содержит кортеж и хочет иметь возможность извлекать элементы по типу во время компиляции. Для упрощения класс контейнера ограничен максимум тремя записями: template< class U = null_type, class V =...
833 просмотров

Очень быстрая сортировка массивов фиксированной длины с использованием сетей компараторов
У меня есть критический для производительности код, который включает сортировку очень короткого массива фиксированной длины с примерно 3–10 элементами в C ++ (параметр изменяется во время компиляции). Мне пришло в голову, что статическая сеть...
5385 просмотров

Вычисление аргумента шаблона во время компиляции
Я пытаюсь вывести большее из двух аргументов шаблона во время компиляции. Оба аргумента шаблона имеют тип size_t. У меня есть шаблонный тип SomeType, который принимает size_t в качестве аргумента шаблона. Затем у меня есть функция, которая...
463 просмотров

Обнаружение наследования того же класса с помощью SFINAE
Я пытаюсь написать метафункцию, которая проверяет, все ли типы, переданные в качестве вариативного параметра шаблона, различны. Кажется, что наиболее эффективный способ сделать это — наследовать от набора классов и определить, есть ли ошибка....
606 просмотров

ExtJS 4.2 Динамически генерируемая модель + хранилище + представление для ряда похожих источников данных
У меня есть коллекция похожих объектов, с которыми нужно обращаться одинаково. Пример объектов: Foo (id, title, size) Bar (id, name, count, ...) ... Обычно для каждого я должен создать 3 файла + зарегистрироваться в хранилищах и...
241 просмотров

Захватить тип аргумента функции из фактических аргументов
Можно ли зафиксировать тип формального аргумента, имея только имя функции и фактические аргументы? Мне понадобится что-то похожее на decltype, но оно должно возвращать тип функции, а не возвращаемый тип функции. Я нашел половину решения с C ++...
394 просмотров

Метапрограммирование С++ - дерево поиска во время компиляции
ОБНОВЛЕНИЕ: извините за путаницу в терминах — мне нужно не бинарное дерево, а дерево сегментов или дерево интервалов. Представьте, что мне нужно статически инициализировать дерево поиска каждый раз, когда выполняется моя программа. Tree t;...
1709 просмотров