推論された戻り値の型が std::nullptr_t の場合、2 番目の代入が許可されるのはなぜですか? 関数ポインターでは、これは禁止されています。
2番目のラムダが実行されないのはなぜですか?
#include <cstdio>
#include <functional>
int main()
{
std::function<void* ()> f;
f = []() -> void* {
printf ("runs\n");
return nullptr;
};
f();
f = []() {
printf ("doesn't run\n");
return nullptr; // -> std::nullptr_t
};
f();
return 0;
}