std::function<void(bool)> f;
std::function<void()> binded_f = std::bind(f, true);
std::cout << (f != nullptr) << " " << (binded_f != nullptr) << "\n";
f(true);
binded_f();
Above code gave output 0 1
, and binded_f()
crash with Unhandled exception at 0x00007FFE7B63A388 in: Microsoft C++ exception: std::bad_function_call at memory location 0x00000096960FA660. occurred
in MSVC.
Seems calling the null function f
is fine, while after std::bind
applied, it will crash. What should we do? Do we need check a function before binded?
Aucun commentaire:
Enregistrer un commentaire