made the callable_no_args function object a named object rather than a temporary, in order to avoid gratuitous breakage on some compilers