mirror of
https://github.com/pybind/pybind11.git
synced 2026-05-11 08:50:31 +00:00
fix py::cast<void *> (#1605)
Pybind11 provides a cast operator between opaque void* pointers on the
C++ side and capsules on the Python side. The py::cast<void *>
expression was not aware of this possibility and incorrectly triggered a
compile-time assertion ("Unable to cast type to reference: value is
local to type caster") that is now fixed.
This commit is contained in:
@@ -1611,7 +1611,8 @@ template <typename T> using move_never = none_of<move_always<T>, move_if_unrefer
|
||||
// everything else returns a reference/pointer to a local variable.
|
||||
template <typename type> using cast_is_temporary_value_reference = bool_constant<
|
||||
(std::is_reference<type>::value || std::is_pointer<type>::value) &&
|
||||
!std::is_base_of<type_caster_generic, make_caster<type>>::value
|
||||
!std::is_base_of<type_caster_generic, make_caster<type>>::value &&
|
||||
!std::is_same<intrinsic_t<type>, void>::value
|
||||
>;
|
||||
|
||||
// When a value returned from a C++ function is being cast back to Python, we almost always want to
|
||||
|
||||
Reference in New Issue
Block a user