some fix.

This commit is contained in:
ykiko 2024-07-02 23:14:44 +08:00
parent 8d0e304ecd
commit f803a7eca6
2 changed files with 2 additions and 5 deletions

View File

@ -10,7 +10,7 @@ struct capsule {
void* ptr;
void (*destructor)(void*);
template <typename T>
template <typename T, typename = std::enable_if_t<!(std::is_same_v<remove_cvref_t<T>, capsule>)>>
capsule(T&& value) :
ptr(new auto(std::forward<T>(value))), destructor([](void* ptr) {
delete static_cast<std::decay_t<T>*>(ptr);
@ -26,7 +26,7 @@ struct capsule {
}
~capsule() {
if(ptr != nullptr && destructor != nullptr) destructor(ptr);
if(ptr && destructor) destructor(ptr);
}
};
} // namespace pybind11::impl

View File

@ -365,9 +365,6 @@ class capsule : public object {
PYBIND11_TYPE_IMPLEMENT(object, impl::capsule, handle(vm->builtins->attr("capsule"))._as<pkpy::Type>());
public:
template <typename T>
capsule(T&& value) : object(create(std::forward<T>(value))) {}
capsule(void* ptr, void (*destructor)(void*) = nullptr) : object(create(ptr, destructor)) {}
void* data() const { return self().ptr; }