The following program:
#include <functional>
#include <print>
int main() {
std::move_only_function<int(int)> fn1(static_cast<int(*)(int)>(nullptr));
std::move_only_function<int(int)> fn2(std::in_place_type<int(*)(int)>, nullptr);
std::print("fn1: {}, fn2: {}", static_cast<bool>(fn1), static_cast<bool>(fn2));
}
Prints:
This is what the Standard is apparently asking for.
Isn't this stupid?