The constraints put on the constructors of `bound_parser` seem to be different from `opt`, as the latter works in all these scenarios. Works: ```cpp lyra::arg([](std::string) {}, "hint"); ``` Does not work: ```cpp auto f = [](std::string) {}; lyra::arg(f, "hint"); ``` ```cpp auto f = std::function<void(std::string)>{}; lyra::arg(f, "hint"); ``` They both cause compile errors as they attempt to stream into/out of the function object. https://godbolt.org/z/W8M7Tb687