Вопросы по теме 'std-function'

Почему экземпляры std::function имеют конструктор по умолчанию?
Наверное, это философский вопрос, но я столкнулся со следующей проблемой: Если вы определите std::function и не инициализируете ее правильно, ваше приложение рухнет, например так: typedef std::function<void(void)> MyFunctionType;...
14245 просмотров
schedule 12.11.2022

Параметры шаблона типа функции C++ 11 с переменным числом аргументов
Возможный дубликат: Что означает токен? Существует относительно новый способ прямого указания типов функций (по крайней мере, в качестве параметров шаблона). Не знаю, строго ли это С++ 11, но я столкнулся с этим, читая заголовки STL...
589 просмотров
schedule 14.09.2022

Использование аргументов шаблона 'void' в C++
Возьмем следующий минимальный пример: using Type1 = std::function<void(void)>; template <typename T> using Type2 = std::function<void(T)>; Type1 whyDoesThisWork; Type2<void> andYetThisDoesNot; Если псевдоним второго...
36727 просмотров
schedule 21.05.2022

C++ Как ссылаться на шаблонные функции с помощью std::bind/std::function
Если у вас есть шаблонный класс или шаблонная функция (или их комбинация), как вы привязываете эту функцию (сохраняя параметр типа шаблона)? Мне дали некоторую помощь по основному синтаксису в посте ниже, чтобы привязать к функциям с явными...
17625 просмотров

Как получить этот указатель из std::function?
Поскольку std::function может содержать функции-члены, он должен где-то хранить указатель на экземпляр объекта. Как я могу получить указатель this из std::function , содержащего функцию-член?
1361 просмотров
schedule 03.07.2022

FastDelegate и lambdas - не могу заставить их работать (самые быстрые делегаты Дона Клагстона)
Я пытаюсь создать реализацию C++11 Указатели функций-членов Дона Клагстона и самые быстрые делегаты C++ , и заставить его работать как вставную замену std::function . Вот что у меня получилось. Я создаю лямбда FastDelegates следующим...
2486 просмотров
schedule 19.09.2023

Используйте std::bind для привязки к родительской версии виртуальной функции.
Я хочу создать объект std::function для версии родительского класса виртуальной и переопределенной функции, см. следующий пример: #include <iostream> #include <functional> class Parent { public: virtual void func1()...
216 просмотров

реализация делегата c ++, как найти конкретную функцию-член класса
Я изучаю, как реализовать простые делегаты с помощью С ++ 11. Проблема в методе отключения, я хотел бы указать конкретную функцию конкретного объекта, который нужно удалить с карты. В этой реализации я стираю все функции, связанные с конкретным...
269 просмотров
schedule 10.03.2022

Разрешает ли std::function неявное приведение по ссылке для копирования возвращаемого типа?
В приведенном ниже фрагменте кода компилятор молча преобразует указатель функции возврата по копии в функцию возврата по константной ссылке std::function. При вызове экземпляра std::function возвращается ссылка на копию, и приложение аварийно...
724 просмотров

Вызов одной шаблонной функции не работает
Я не знаю, как вызвать функцию call . Это шаблонный класс с шаблонным вызовом функции. Но как я могу использовать этот код? #include <iostream> #include <conio.h> #include <functional> template <typename Result> class...
91 просмотров

Вектор std::function с разными сигнатурами
У меня есть несколько функций обратного вызова с разными подписями. В идеале я хотел бы поместить их в вектор и вызвать соответствующий в зависимости от определенных условий. e.g. void func1(const std::string& value); void func2(const...
12667 просмотров
schedule 07.03.2023

Почему функция GCC std::function не использует ссылки rvalue на аргументы, передаваемые по значению, для передачи их между своими внутренними делегатами?
Сначала рассмотрим следующий код: #include <iostream> #include <functional> struct Noisy { Noisy() { std::cout << "Noisy()" << std::endl; } Noisy(const Noisy&) { std::cout << "Noisy(const Noisy&)"...
1242 просмотров
schedule 26.02.2023

Понимание аргумента шаблона для std::function в С++ 11?
Я освежаю некоторые С++ 11, и мне немного трудно что-то понять. std::function позволяет мне передавать любой тип Callable как объект функции. Я знаю , что он делает и как его использовать. void foo(int a, int b) {} std::function<void...
391 просмотров
schedule 30.07.2022

Различные перегрузки с параметрами std::function неоднозначны с привязкой (иногда)
У меня есть две перегрузки функции foo , которые принимают разные std::function , что приводит к проблеме неоднозначности для последнего при использовании с результатом std::bind . Я не понимаю, почему только это двусмысленно. void...
1182 просмотров
schedule 20.08.2023

Шаблоны с переменными числами, вывод типов и std :: function
Я пытаюсь создать функцию-шаблон, в которую можно передать какую-либо другую функцию с любым типом и количеством параметров и привязать ее к std::function . Мне удалось это сделать: #include <iostream> #include <functional> int...
613 просмотров

Нечетное поведение возврата с std :: function, созданным из лямбда (C ++)
У меня проблемы с std :: functions, созданными из лямбда-выражений, если функция возвращает ссылку, но тип возвращаемого значения не вызывается явно как ссылка. Кажется, что std :: function создается нормально, без предупреждений, но после ее вызова...
2507 просмотров
schedule 09.03.2022

неразрешенный тип перегруженной функции со статической функцией в std::function
Я получаю сообщение об ошибке «неразрешенный тип перегруженной функции» при попытке передать перегруженную статическую функцию в std::function . Мне известны похожие вопросы, такие как это и это . Однако, несмотря на то, что ответы там...
996 просмотров
schedule 06.05.2022

Преобразование между std::function с разными сигнатурами (T* arg в void* arg)
Есть ли способ преобразовать std::function с аргументом T* в аналогичный с аргументом void* ? Это кажется возможным, поскольку вызовы должны быть совместимы на двоичном уровне. Например, как я могу заставить это работать, не превращая...
183 просмотров
schedule 26.05.2023

Получить имя std::function
В следующем игрушечном примере я хотел бы получить имя функции. Сама функция была задана как аргумент std::function . Возможно ли в С++ получить имя объекта std::function ? void printName(std::function<void()> func){ //Need a...
8456 просмотров
schedule 15.02.2023

C++17: ошибка преобразования лямбда в std::function
В настоящее время я изучаю дополнения С++ 17. После поиска с std::variant захотелось использовать и std::optional в том же примере . В настоящее время видим, что компиляция не выполняется из-за следующей ошибки: error: no viable...
2078 просмотров
schedule 13.10.2022