Вопросы, помеченные тегом «templates»
Тег templates используется в нескольких контекстах: универсальное программирование (особенно C ++) и создание данных / документов с использованием механизмов шаблонов. При использовании этого тега для сложных вопросов реализации - укажите язык кода, на котором написана реализация.
2 апреля 2022 в 18:35
194
3
Почему компилятор MSVC помещает двоичные файлы экземпляра шаблона в сборку?
Я обнаружил что-то странное в компиляторе MSVC.
определение шаблона функции помещается в сборку, а оптимизация устраняет необходимость в них.
Кажется, что Clang и GCC успешно удаляют определение функции, а MSVC — нет.
Можно ли это исправить?
main.cpp:
#include...
9 августа 2021 в 01:41
125
1
C++ GTest/GMock для шаблонов классов: вызывается настоящий метод вместо указанной фиктивной реализации
Вот упрощенный пример (из gMock Cookbook) шаблона класса, который я хочу имитировать:
class StackInterface {
public:
virtual ~StackInterface();
virtual int GetSize() const {
return 3;
}
};
template<typename Elem>
class MockStack : public...
8 августа 2021 в 20:46
57
1
Почему это простое использование признаков SFINAE и типа для перегрузки шаблона функции приводит к неоднозначному вызову?
Я пытаюсь использовать признаки типа, чтобы предоставить пару перегрузок для конкретной функции, чтобы мне не нужно было указывать параметр шаблона при вызове указанной функции, и он мог работать для любого типа данных и разных типов. контейнеров:
#include...
8 августа 2021 в 02:13
47
1
Шаблоны C++ с указателем на ссылку
У меня есть следующий статический метод структуры:
template<typename Edge1, typename Edge2, typename... Edges>
requires std::derived_from<Edge1, Edge> && std::derived_from<Edge2, Edge> && (std::derived_from<Edges, Edge>...
7 августа 2021 в 12:12
295
1
Рекурсивная реализация шаблона превысила ошибку в dtor, но не в ctor. Почему?
Попробуйте clang++ и g++, одинаковый результат для обоих.fatal error: recursive template instantiation exceeded maximum depth
template<class T>
struct Bar {
~Bar() {
if (ptr) { delete ptr; }
}
Bar<Bar<T>> * ptr{nullptr};
};
int main() {...
7 августа 2021 в 11:03
29
0
Редактор появляется дважды при создании фрагментов опыта и открывает его.
когда я создаю новый тип шаблона для фрагментов опыта и создаю фрагменты опыта с использованием этого шаблона, возникает такая проблема, не уверен, что я упускаю.
он выглядит нормально при создании с использованием шаблонов по умолчанию от We.Retail
Изображение двух...
7 августа 2021 в 10:30
111
2
Как создать многомерный массив std::array с помощью шаблона?
Как я могу создать многомерный объект std::array типа Type с (конечно) известными начальными размерами constexpr с некоторым умным вариативным шаблоном "MDA".
Количество измерений должно быть переменным.
В конце я хочу написать:
MDA<int,3,4,5,6> a4d{};
и...
7 августа 2021 в 10:24
99
1
Встроенная лямбда-переменная, встроенная функция и встроенная функция шаблона с автоматическим выводом типа
Предположим, я хочу объявить встроенную функцию, которая будет принимать аргумент произвольного типа.
Я думаю, что это можно сделать следующими способами.
//////
inline auto const myfunc = [&](const auto& val){return something(val);};
//////
inline auto...
7 августа 2021 в 04:55
37
1
Безопасно ли разделять объявление и определения вашего шаблонного класса в разных файлах заголовков?
Я пытаюсь создать библиотеку для школьной работы, и мне интересно, безопасно объявлять <83373131>класс<8337311>13717 > on the main header file containing the class definition and method declarations, but then separating the method определения в файле...
7 августа 2021 в 01:37
42
0
Класс шаблона с массивом с несколькими пользовательскими входами
Я пытаюсь создать программу, которая принимает идентификатор и оценки каждого учащегося с пользовательским вводом, используя класс шаблона. Но когда я пытаюсь создать массив учеников, возникают эти ошибки.
darkxith@DESKTOP-2UFE545:~/proA2$ g++ test.h test.cpp -o...
6 августа 2021 в 20:31
1822
1
Как использовать шаблоны Freemarker для вывода JSON
У меня есть приложение, которому необходимо обработать некоторые данные и вывести их в виде файла JSON. Вместо того, чтобы обрабатывать все вручную, я подумал, что могу использовать библиотеку шаблонов для структурирования вывода. Freemarker, казалось, предлагал то,...
6 августа 2021 в 14:00
89
1
Константа шаблона времени выполнения C++
Я пытался создать определяемый пользователем тип контейнера с using и закрытыми членами в классе, которые не являются константами времени компиляции. Это недопустимо, и компилятор пожаловался на него. Эти частные константы-члены будут инициализированы только во время...
6 августа 2021 в 13:21
75
3
Условный тип, обусловленный операционной системой
Что вы предлагаете избегать использования псевдонимов типов в этом случае?
// this is a header file, sample.h
#ifdef _WIN32
using default_type = int;
#else
using default_type = float;
#endif
template<typename T = default_type>
class Sample
{
};
Я не хочу...
6 августа 2021 в 12:52
222
1
Внедрение шаблона администрирования COREui в соответствии с демонстрацией
Я изучаю веб-разработку и пытаюсь использовать административный шаблон COREui 4.0.1 Bootstrap в существующем проекте Symfony 5.3 вместо стандартных компонентов и утилит Bootstrap 5. Я пытаюсь сделать так, чтобы страница выглядела как...
6 августа 2021 в 07:41
57
1
Можно ли опустить параметр шаблона, если у меня есть тип в левой части задания?
Я хочу написать функцию, которая возвращает предварительно выделенный вектор.
Так как это должно работать для любого вектора, я использую шаблон.
Мой вопрос: можно ли вывести параметр шаблона вызова функции с параметром шаблона левого вектора?
template<typename...
6 августа 2021 в 02:36
142
1
почему type_identity имеет значение?
Я знаю, что объект lambda не является объектом std::function, поэтому я понимаю, что это не сработает:
template <typename ...args_t>
void func(std::function<void(args_t...)> function_, args_t ...args){
/// do something here
}
void test() {
...
5 августа 2021 в 20:56
83
1
Шаблон, принимающий все указатели функций-членов (включая CV-qualified и ref-qualified) [дубликат]
Я хочу написать шаблон, который принимает указатель на функцию-член (возможно, с указанием CV и/или с указанием ссылки), а также сопоставляет все соответствующие типы (тип возвращаемого значения, тип класса и типы аргументов).
Простая версия может выглядеть...
5 августа 2021 в 18:28
71
1
Обходной путь С++ для шаблонного полиморфизма
class Base{
public:
template <typename T> T getValueAs()
{
//should return (T)this->getValue()
}
template <typename T> void setValueFrom(T val)
{
//should call this->setValue((Impl::value_type)val)
} ...
5 августа 2021 в 14:57
134
1
Не могу создать boost::shared_ptr из этого
Скажем, у меня есть следующий абстрактный класс A. Теперь я пытаюсь создать shared_ptr для A изнутри класса A. Итак, в A у меня есть следующая функция:
class A {
void A::setupArguments() const {
ext::shared_ptr<A> ptr =...
5 августа 2021 в 11:47
56
1
Псевдоним шаблона с переменным числом аргументов без аргументов
Я нашел несколько похожих тем, но ни одна из них не дает прямого ответа на мою конкретную проблему.
У меня есть класс (назовем его Foo) в некоторой библиотеке, которую мы используем в нескольких модулях. Теперь мне нужно преобразовать этот класс в вариативный шаблон...