Since 'd' is in general some default constructed value, things can get weird, for example with default constructed std::function