Pytania otagowane jako std-function

7
std :: function vs template
Dzięki C ++ 11 otrzymaliśmy std::functionrodzinę wrapperów funktorów. Niestety ciągle słyszę tylko złe rzeczy o tych nowych dodatkach. Najbardziej popularne jest to, że są strasznie powolne. Przetestowałem to i naprawdę są do niczego w porównaniu z szablonami. #include <iostream> #include <functional> #include <string> #include <chrono> template <typename F> float calc1(F …


3
Jak poprawnie sprawdzić, czy funkcja std :: jest pusta w C ++ 11?
Zastanawiałem się, jak prawidłowo sprawdzić, czy std::functionjest pusty. Rozważmy ten przykład: class Test { std::function<void(int a)> eventFunc; void registerEvent(std::function<void(int a)> e) { eventFunc = e; } void doSomething() { ... eventFunc(42); } }; Ten kod kompiluje się dobrze w MSVC, ale jeśli zadzwonię doSomething()bez inicjalizacji eventFunckodu, oczywiście ulega awarii. To …

4
Dlaczego std :: function nie uczestniczy w rozwiązywaniu problemów z przeciążeniem?
Wiem, że następujący kod nie zostanie skompilowany. 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; } Ponieważ std::functionmówi się, że nie należy rozważać rozdzielczości przeciążenia, jak …

1
poprawność std :: function const
Załóżmy, że mam typ na żądanie: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Zauważ, że mutable_callablema non-const, operator()która modyfikuje zmienną składową ..... Załóżmy teraz, że utworzyłem std::functionz mojego typu: std::function<int()> foo = mutable_callable{}; Teraz mogę to zrobić: void invoke(std::function<int()> const& …

2
Wezwanie do lambda jest dwuznaczne, pomimo wyraźnego podania typu zwrotu
Przeciążona funkcja powinna przyjmować oba funktory, biorąc pod uwagę, że typ lambda jest rozstrzygalny (można ją wyrzucić std::function(proszę poprawić mnie, jeśli się mylę). Pytanie brzmi: Dlaczego poniżej jest błąd kompilacji, mimo że jawnie jest to typ lambda zdefiniowany? ( [&]() -> Type {}) Pamiętaj, że dla mojego obecnego rozwiązania potrzebuję …
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.