mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-29 08:32:02 +00:00
copyable_holder_caster<type, std::shared_ptr<type>>
: split load_value_shared_ptr()
, load_value_smart_holder()
(the latter just throws right now)
This commit is contained in:
parent
556f28a1a4
commit
17c0354050
@ -867,13 +867,9 @@ public:
|
||||
|
||||
protected:
|
||||
friend class type_caster_generic;
|
||||
void check_holder_compat() {
|
||||
if (typeinfo->default_holder) {
|
||||
throw cast_error("Unable to load a custom holder type from a default-holder instance");
|
||||
}
|
||||
}
|
||||
void check_holder_compat() {}
|
||||
|
||||
bool load_value(value_and_holder &&v_h) {
|
||||
bool load_value_shared_ptr(value_and_holder &&v_h) {
|
||||
if (v_h.holder_constructed()) {
|
||||
value = v_h.value_ptr();
|
||||
holder = v_h.template holder<std::shared_ptr<type>>();
|
||||
@ -889,6 +885,17 @@ protected:
|
||||
#endif
|
||||
}
|
||||
|
||||
bool load_value_smart_holder(value_and_holder && /*v_h*/) {
|
||||
throw std::runtime_error("BAKEIN_WIP load_value_smart_holder");
|
||||
}
|
||||
|
||||
bool load_value(value_and_holder &&v_h) {
|
||||
if (typeinfo->default_holder) {
|
||||
return load_value_smart_holder(std::move(v_h));
|
||||
}
|
||||
return load_value_shared_ptr(std::move(v_h));
|
||||
}
|
||||
|
||||
template <typename T = std::shared_ptr<type>,
|
||||
detail::enable_if_t<!std::is_constructible<T, const T &, type *>::value, int> = 0>
|
||||
bool try_implicit_casts(handle, bool) {
|
||||
|
Loading…
Reference in New Issue
Block a user