Вопросы с тегом «std-function»

7
std :: function против шаблона
Благодаря C ++ 11 мы получили std::functionсемейство упаковщиков функторов. К сожалению, я продолжаю слышать только плохие вещи об этих новых дополнениях. Наиболее популярным является то, что они ужасно медленные. Я проверил это, и они действительно сосут по сравнению с шаблонами. #include <iostream> #include <functional> #include <string> #include <chrono> template <typename …

4
std :: function и std :: bind: что это такое и когда их следует использовать?
Я знаю, что такое функторы и когда их использовать с stdалгоритмами, но я не понял, что Страуструп говорит о них в FAQ по C ++ 11 . Может ли кто-нибудь объяснить, что std::bindи std::functionесть, когда их следует использовать, и привести несколько примеров для новичков?

3
Как правильно проверить, пусто ли std :: function в C ++ 11?
Мне было интересно, как правильно проверить std::function, пуст ли. Рассмотрим этот пример: class Test { std::function<void(int a)> eventFunc; void registerEvent(std::function<void(int a)> e) { eventFunc = e; } void doSomething() { ... eventFunc(42); } }; Этот код отлично компилируется в MSVC, но если я позвоню doSomething()без инициализации, eventFuncкод явно выйдет из …

4
Почему std :: function не участвует в разрешении перегрузки?
Я знаю, что следующий код не скомпилируется. void baz(int i) { } void baz() { } class Bar { std::function<void()> bazFn; public: Bar(std::function<void()> fun = baz) : bazFn(fun){} }; int main(int argc, char **argv) { Bar b; return 0; } Потому std::functionчто сказано не учитывать разрешение перегрузки, как я читал …

1
std :: function const правильность
Предположим, у меня есть вызываемый тип, например: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Обратите внимание, что mutable_callableесть неконстантный, operator()который изменяет переменную-член ..... Теперь предположим, что я создал std::functionиз моего типа: std::function<int()> foo = mutable_callable{}; Теперь я могу сделать это: …

2
Вызов лямбда неоднозначен, несмотря на явное указание типа возврата
Перегруженная функция должна принимать оба функтора, учитывая, что тип лямбды можно разрешить (можно преобразовать в std::function(пожалуйста, исправьте меня, если я ошибаюсь). Вопрос в том, почему ниже приведена ошибка компиляции, несмотря на то, что лямбда-тип явно определен? ( [&]() -> Type {}) Обратите внимание, что для моего текущего решения мне нужен …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.