diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h index 410def5ef..519a938a5 100644 --- a/include/pybind11/cast.h +++ b/include/pybind11/cast.h @@ -1589,19 +1589,19 @@ struct smart_holder_type_caster> #ifndef PYBIND11_USE_SMART_HOLDER_AS_DEFAULT -#define PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(T, H) +#define PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(T, ...) template class type_caster_for_class_ : public type_caster_base {}; #else -#define PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(T, H) \ +#define PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(T, ...) \ namespace pybind11 { \ namespace detail { \ template <> \ class type_caster : public type_caster_base {}; \ template <> \ - class type_caster : public type_caster_holder {}; \ + class type_caster<__VA_ARGS__> : public type_caster_holder {}; \ } \ } diff --git a/tests/test_smart_ptr.cpp b/tests/test_smart_ptr.cpp index bebc336b0..de8bb4497 100644 --- a/tests/test_smart_ptr.cpp +++ b/tests/test_smart_ptr.cpp @@ -275,10 +275,8 @@ PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(Object, ref) PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(MyObject1, ref) PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(MyObject2, std::shared_ptr) PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(MyObject3, std::shared_ptr) -using unique_ptr_myobject4_nodelete = std::unique_ptr; -PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(MyObject4, unique_ptr_myobject4_nodelete) -using unique_ptr_myobject4a_nodelete = std::unique_ptr; -PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(MyObject4a, unique_ptr_myobject4a_nodelete) +PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(MyObject4, std::unique_ptr) +PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(MyObject4a, std::unique_ptr) PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(MyObject4b, std::unique_ptr) PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(MyObject5, huge_unique_ptr) PYBIND11_SMART_POINTER_HOLDER_TYPE_CASTERS(SharedPtrRef::A, std::shared_ptr)