support None for const char* arg, with minimal overhead #683
+12
−10
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Since pybind11 also accepts None for
const char*
as an exception among built-in types, remove a paragraph about differences in porting.rst.The overhead is minimal. Checking the size of
test_functions_ext.cpython-311-x86_64-linux-gnu.so
built with -O3, it increased only by 32 bytes.I'm aware that it's possible to use
std::optional<const char*>
, but to me it looks more awkward thanstd::optional<int>
, perhaps becauseconst char*
, unlikestd::string
, looks already optional.There is a third place in docs where None arg is covered:
nanobind/docs/functions.rst
Lines 178 to 181 in 8e5fd14
Perhaps it's outdated, because having argument such as
int*
works fine, just doesn't accept None. Or I misunderstand it. Anyway, I didn't try to edit it.