Описание тега c++-templates

1 ответ

Как сопоставить тип оболочки с типами в варианте

Предположим, у меня есть такой код: template<typename T> struct wrapper {}; using my_variant = std::variant<int, bool>; using my_wrapped = // should resolve to std::variant<wrapper<int>, wrapper<bool>>, by adding wrappe…
03 янв '22 в 16:00
2 ответа

Не удается получить доступ к структуре, определенной в базовом классе

Я реализовал класс BinaryTree и внутри определения BinaryTree определил структуру «BinaryNode». #ifndef BINARYTREE_H #define BINARYTREE_H #include <iostream> #define SPACE 10 template <class T,class U> class BinaryTree { protected: typed…
04 фев '22 в 19:00
1 ответ

шаблон c++ с частично фиксированным списком аргументов

Рассмотрим случай, подобный следующему: template<typename T> class A { ... }; template<typename T, typename DataType = std::vector<A<T>>> class B { .... DataType data; ... } В моем случае тип может быть любым стандартным «кон…
07 фев '22 в 20:32
2 ответа

Почему шаблон не отбрасывает co_return?

Я хотел бы сделать функцию как с синхронизацией, так и с версией сопрограммы, без использования специализации шаблона, т.е. с if constexpr. Это функция, которую я написал: template <Async _a> AsyncResult<int, _a> func(int a) { if constex…
11 мар '22 в 02:55
1 ответ

Почему я не могу передать числовой параметр шаблона в свою шаблонную функцию?

У меня есть собственный класс, инкапсулирующий ("MyTuple"), и другой класс, реализующий собственный интерфейс для ("MyInterface"). Мне нужен этот отдельный интерфейс в кодовой базе, код ниже упрощен. Поскольку элементы std::tupleнеобходимо получить …
31 мар '22 в 11:44
0 ответов

Шаблонная операция над стертым шрифтом

У меня есть класс шаблона val - template <typename T> class val; Здесь оператор перегружен для любой пары типов T, T2. В основном член - template <typename T2> void operator * (const val<T2>&); Теперь у меня есть еще один класс…
10 мар '22 в 02:10
0 ответов

Может ли специализированный метод шаблона обойти метод по умолчанию, который не будет компилироваться из-за создания абстрактного объекта?

Это может быть странный вопрос, но он может быть весьма удобен в моем случае использования. У меня есть общий класс: template <typename CGtObj> class CGtObjectsMap { virtual CGtObj* newGtObject(GtId idXML, const CSAXElement *) const { return n…
13 апр '22 в 09:45
2 ответа

C++ Шаблон класса массива с параметрами шаблона

Я создал шаблон класса Array с параметрами шаблона <тип элемента, размер> и членами класса массива, функциями ввода, сортировки и вывода. но код не работает ниже, что я могу делать неправильно? #include <iostream> using namespace std; te…
19 май '22 в 09:06
3 ответа

Преобразование группы функций C++ в шаблон C++

У меня есть группа функций, которые выполняют аналогичные действия для разных классов входных параметров ParamX, ParamY, ParamZ. Они имеют общий вид: Result funcX(ParamX param){ auto result = param.getX(); // param.getY() in case of ParamY // check …
03 апр '22 в 04:44
0 ответов

Специализируйте тип возвращаемого значения метода шаблона по строковому параметру шаблона

По чисто косметическим причинам (т. е. чтобы сделать C++ API более похожим на тот же API для языков с динамической типизацией) у меня есть несколько классов: namespace O { class A { public: void foo() { std::cout << "foo" << std::endl; }…
15 мар '22 в 17:28
0 ответов

Нет специализации шаблона в clang AST, если отсутствует заголовок

Наблюдение: Clang AST не содержит какой-либо специализации шаблона, если отсутствует заголовочный файл. Это верно даже тогда, когда шаблон не имеет ничего общего с заголовочным файлом. Например, #include "unknown_header.h" template<class T> T …
23 окт '22 в 15:26
0 ответов

Доступ к классу шаблона из родительского пространства имен

Я пытаюсь специализировать класс из родительского пространства имен, определенного во вложенных пространствах имен. namespace A { template<typename T, typename... Ts> struct AStruct; } namespace A::B { template<> struct A::AStruct<dou…
16 ноя '22 в 03:25
2 ответа

g++, проблема переопределения компиляции оператора ostream << std::array с шаблоном

Я не могу скомпилировать с помощью g++ простой код, который отлично работает в MSVC. Код включает перегрузку оператора для ostream << array<T,D>, и g++ не может его найти, хотя он находится прямо здесь. При этом аналогичная перегрузка дл…
08 дек '22 в 09:02
0 ответов

Как избежать ненужных копий при инициализации векторов с вариативными шаблонами

В моем проекте я сталкиваюсь с инициализирующими векторами с вариативным шаблоном. Однако я обнаружил, что некоторые ненужные или неожиданные копии могут происходить в следующем коде (в функциях и ). #include <iostream> #include <vector>…
20 дек '22 в 12:18
1 ответ

Как вложить и объединить кучу функций?

Вроде у меня куча функций,f, g, h.... Как легко совместить их вnew_func(x) = f(g(h(x)))? Для удобства можно считать, что последняя функция не имеет параметров, а остальные функции можно назвать вложенными. Может ли пакет параметров шаблона достичь э…
01 ноя '22 в 20:38
1 ответ

Как использовать концепции для передачи аргумента методу класса?

У меня есть класс optional_monadic, который я наследую от класса std::Optional. template <class T> class monadic_optional : public std::optional<T> { public: using std::optional<T>::optional; monadic_optional(T value) : std::option…
10 июл '22 в 14:16
1 ответ

перебрать функцию шаблона Variadic и выбрать аргументы указателя

У меня есть функция шаблона Variadic на С++, и я хочу перебрать аргументы шаблона и выбрать те аргументы, которые являются указателями. ПОЖАЛУЙСТА, СМОТРИТЕ РАЗДЕЛ ОБНОВЛЕНИЙ НИЖЕ. Итак, у меня есть следующий код ниже. Я написал скелетный код, котор…
1 ответ

Понимание концепций. Проверить, является ли член статическим

Допустим, у нас есть простая концепция, например: template <typename T> concept MyConcept = requires { T::value == 42; }; В моем понимании концепция говорит о том, что если код действителен для типа Т, то я прохожу. Итак, ДОЛЖЕН быть статическ…
02 дек '22 в 11:21
1 ответ

Как специализировать конструктор класса шаблона в C++

Я практикую C++ и хочу реализовать несколько структур данных с помощью шаблонов. Я хочу создать конструктор дляList<char>который принимает C++ в качестве параметра, но я не хочу создавать такой конструктор для остальных типов (так как не имеет…
23 авг '22 в 17:50
1 ответ

Почему std::is_integral возвращает false для decltype(*t), где t равно int*?

#include<iostream> using namespace std; int main() { int* t; using T = decltype(*t); cout << is_integral<T>::value << endl; return 0; } Почему приведенный выше код печатает 0?