diff --git a/include/pybind11/attr.h b/include/pybind11/attr.h index 50efdc7ce..97147904c 100644 --- a/include/pybind11/attr.h +++ b/include/pybind11/attr.h @@ -377,7 +377,7 @@ template <> struct process_attribute : process_attribu }; inline void process_kw_only_arg(const arg &a, function_record *r) { - if (!a.name || strlen(a.name) == 0) + if (!a.name || a.name[0] == '\0') pybind11_fail("arg(): cannot specify an unnamed argument after an kw_only() annotation"); ++r->nargs_kw_only; } diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h index 432e28695..0f133c25f 100644 --- a/include/pybind11/pybind11.h +++ b/include/pybind11/pybind11.h @@ -444,7 +444,7 @@ protected: signatures += it->signature; signatures += "\n"; } - if (it->doc && strlen(it->doc) > 0 && options::show_user_defined_docstrings()) { + if (it->doc && it->doc[0] != '\0' && options::show_user_defined_docstrings()) { // If we're appending another docstring, and aren't printing function signatures, we // need to append a newline first: if (!options::show_function_signatures()) { diff --git a/include/pybind11/stl.h b/include/pybind11/stl.h index 61d3fba61..ca20b7483 100644 --- a/include/pybind11/stl.h +++ b/include/pybind11/stl.h @@ -380,7 +380,11 @@ struct type_caster> : variant_caster> { PYBIND11_NAMESPACE_END(detail) inline std::ostream &operator<<(std::ostream &os, const handle &obj) { +#ifdef PYBIND11_HAS_STRING_VIEW + os << str(obj).cast(); +#else os << (std::string) str(obj); +#endif return os; }