Вопросы по теме 'template-meta-programming'
Как узнать, является ли аргумент, передаваемый функции, классом, объединением или перечислением в С++?
Я хочу определить оператор‹‹ для всех перечислений, чтобы вычислить значение и напечатать, что это перечисление, подобное этому:
код:
enum AnyEnum{A,B,C};
AnyEnum enm = A;
cout << enm <<endl;
вывод:
This is an enum which...
859 просмотров
schedule
06.11.2023
Реализация вектора в С++
Недавно я написал реализацию STL Vector в качестве упражнения по программированию. Программа компилируется, но я получаю странную ошибку:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Я никогда...
66002 просмотров
schedule
01.08.2022
Как разыменовать тип в С++ 03?
Как получить «разыменованный тип» другого типа в С++ 03? Обратите внимание, что это может быть другой разыменовываемый тип, например std::vector<int>::iterator .
например если у меня есть
template<typename T>
struct MyPointer
{...
1838 просмотров
schedule
14.07.2023
Специализация шаблона метода C ++ только для одного индекса
Я хочу выполнить специализацию шаблона только для одного индекса класса. Например, в следующем коде я хочу создать специализацию всякий раз, когда первым классом является int, независимо от того, что такое второй класс. Есть ли способ реализовать...
228 просмотров
schedule
09.12.2022
Неоднозначность специализации метапрограммирования шаблонов С++
Итак, я только начинаю заниматься метапрограммированием шаблонов и пишу строковый класс. Я реализовал ToString, Concat, CharAt и Length без особых проблем, связанных с шаблонами. Я пытался реализовать Substring следующим образом:
struct Null;...
670 просмотров
schedule
29.05.2022
Подсчет с помощью шаблонного метапрограммирования?
Я пытался придумать творческое решение этой проблемы (время от времени) в течение некоторого времени, но пока не смог. Недавно я подумал, что это может быть решено с помощью метапрограммирования шаблонов, хотя я не уверен из-за своего относительного...
1606 просмотров
schedule
30.06.2023
Специализация, которая сама по себе является шаблоном
У меня есть класс шаблонов, для которого у меня есть несколько специализаций. Но следующая специализация — это сам шаблон. Как вы указываете это:
template<typename T>
class Action
{
public: void doStuff() { std::cout <<...
348 просмотров
schedule
21.08.2022
Почему признаки типа С++ 11 не являются шаблонами псевдонимов?
Аналогичный вопрос: Почему type_traits реализованы со специализированными структурами шаблонов вместо constexpr? — но с другим ответом.
Я понимаю, что шаблоны псевдонимов не могут быть специализированы и, следовательно, в настоящее...
3574 просмотров
schedule
01.08.2022
Шаблоны выражений в D
Цель состоит в том, чтобы добиться того же эффекта, что и в этом примере C++ : избежать создания временных шаблонов. Я безуспешно пытался перевести пример C++ на D. Я также пробовал разные подходы.
import std.datetime : benchmark;
import...
427 просмотров
schedule
11.06.2022
транспонировать логические аргументы функции шаблона в аргументы функции времени выполнения с помощью метапрограммирования шаблона
У меня есть функция, которая принимает несколько логических аргументов шаблона:
template<bool par1, bool par2, bool par2>
void function(int arg1, int arg2, int arg3);
Я хочу автоматически сгенерировать во время компиляции (с любой...
3872 просмотров
schedule
15.06.2022
Как сделать функцию, которая сжимает два кортежа в С++ 11 (STL)?
Недавно я столкнулся с этой головоломкой, наконец-то смог найти хакерский ответ (используя массивы индексов) и захотел поделиться им (ответ ниже). Я уверен, что есть ответы, использующие рекурсию шаблонов, и ответы, использующие boost ; если вам...
3033 просмотров
schedule
18.07.2022
Генерация случайных чисел в C++ во время компиляции
Я пытаюсь предварительно вычислить случайные значения, используя библиотеку random С++ 11 во время компиляции. Я в основном следую примерам. Что я здесь делаю неправильно?
using namespace std;
#include <iostream>
#include <vector>...
16135 просмотров
schedule
19.06.2023
`mpl::plus‹ mpl::int_‹1›, mpl::int_‹2› ›::type` отличается от типа `mpl::int_‹3›`?
В приведенном ниже коде воспроизводится поведение библиотеки boost MPL, которое я действительно не понимаю:
#include <boost/type_traits/is_same.hpp>
#include <boost/mpl/int.hpp>
#include <boost/mpl/plus.hpp>
using namespace...
425 просмотров
schedule
06.05.2024
С++ выполняет итерацию в поле вложенной структуры с ускоренным слиянием адаптировать_структуру
Два stackoverflow ответа предложите подход, использующий fusion adapt_struct для перебора полей структуры. Подход выглядит красиво. Однако как выполнить итерацию в поле, которое само по себе является структурой?
Следуя предыдущим ответам, я...
8300 просмотров
schedule
21.03.2023
Как я могу решить, что мой компьютер работает с прямым порядком байтов или с прямым порядком байтов с помощью метапрограммирования шаблона?
Я знаю способ неметапрограммирования, чтобы решить, является ли ПК прямым порядком байтов или нет.
eg:
#include <iostream>
#include <stdint.h>
union A {
uint16_t v;
char c[2];
};
int main(void) {
A a;
a.v =...
289 просмотров
schedule
03.07.2023
Как реализовать класс MultiUnitValue с помощью C++ TMP
Я написал этот класс на VC++, который явно не соответствует стандарту (TBH кажется странным, что он не разрешен стандартом)
Как я могу преобразовать его в стандартный С++ 11?
Код:
#include <functional>
template <typename T,...
278 просмотров
schedule
10.07.2022
Как проверить, совпадают ли два типа во время компиляции (бонусные баллы, если он работает с Boost strong typedef)
Мне было интересно, можно ли проверить, совпадают ли 2 типа во время компиляции. То, что я придумал, это (не знаю, работает ли это, потому что это кажется хакерским, а стандарт IDK - это хорошо, поэтому IDK, на что обращать внимание при...
14689 просмотров
schedule
26.09.2022
С# дженерики, полные по Тьюрингу?
Возможный дубликат: является C# 4.0 во время компиляции завершен?
Хорошо известно, что метаязык шаблонов C++ является полным по Тьюрингу. Я предполагаю, что дженерики С# (или Java) не являются (т.е. вы не можете написать произвольную...
155 просмотров
schedule
14.04.2022
метафункция шаблона для определения специализации шаблона
Вдохновленный этим вопросом , мне интересно, есть ли какая-то проверка во время компиляции, которую можно ввести, чтобы определить, есть ли два заданных шаблона экземпляры:
template <typename T>
class Templ...
typedef...
196 просмотров
schedule
08.05.2022
BOOST_PP_ITERATION для аргументов переменной длины
Я хочу включить luabind в один из моих проектов. Для этого мне нужно предоставить функцию, которая ведет себя аналогично call_function (см. ниже). Эта функция использует некоторую магию шаблонов (любезно предоставленную Boost), с которой я был...
929 просмотров
schedule
09.06.2022