mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-25 14:45:12 +00:00
Removing operator T&&() &&
from smart_holder_type_caster, for compatibility with the behavior of type_caster_base. Enables reverting 2 of 3 test manipulations applied under commit 249df7cbdb
. The manipulation in test_factory_constructors.py is NOT reverted in this commit.
[skip ci]
This commit is contained in:
parent
67c2910308
commit
23036a45eb
@ -1385,19 +1385,15 @@ struct smart_holder_type_caster : smart_holder_type_caster_load<T>,
|
||||
using cast_op_type = conditional_t<
|
||||
std::is_same<remove_reference_t<T_>, T const *>::value,
|
||||
T const *,
|
||||
conditional_t<
|
||||
std::is_same<remove_reference_t<T_>, T *>::value,
|
||||
T *,
|
||||
conditional_t<std::is_same<T_, T const &>::value,
|
||||
T const &,
|
||||
conditional_t<std::is_same<T_, T &>::value,
|
||||
T &,
|
||||
conditional_t<std::is_same<T_, T &&>::value, T &&, T>>>>>;
|
||||
conditional_t<std::is_same<remove_reference_t<T_>, T *>::value,
|
||||
T *,
|
||||
conditional_t<std::is_same<T_, T const &>::value,
|
||||
T const &,
|
||||
conditional_t<std::is_same<T_, T &>::value, T &, T>>>>;
|
||||
|
||||
// clang-format off
|
||||
|
||||
operator T() { return this->loaded_as_lvalue_ref(); }
|
||||
operator T&&() && { return this->loaded_as_rvalue_ref(); }
|
||||
operator T const&() { return this->loaded_as_lvalue_ref(); }
|
||||
operator T&() { return this->loaded_as_lvalue_ref(); }
|
||||
operator T const*() { return this->loaded_as_raw_ptr_unowned(); }
|
||||
|
@ -23,8 +23,8 @@ def test_cast():
|
||||
|
||||
|
||||
def test_load():
|
||||
assert m.pass_valu_atyp(m.atyp("Valu")) == "pass_valu:Valu.MvCtor.MvCtor"
|
||||
assert m.pass_rref_atyp(m.atyp("Rref")) == "pass_rref:Rref.MvCtor"
|
||||
assert m.pass_valu_atyp(m.atyp("Valu")) == "pass_valu:Valu.MvCtor.CpCtor"
|
||||
assert m.pass_rref_atyp(m.atyp("Rref")) == "pass_rref:Rref.MvCtor.CpCtor"
|
||||
assert m.pass_cref_atyp(m.atyp("Cref")) == "pass_cref:Cref.MvCtor"
|
||||
assert m.pass_mref_atyp(m.atyp("Mref")) == "pass_mref:Mref.MvCtor"
|
||||
assert m.pass_cptr_atyp(m.atyp("Cptr")) == "pass_cptr:Cptr.MvCtor"
|
||||
|
@ -62,7 +62,7 @@ def test_methods_and_attributes():
|
||||
assert cstats.alive() == 0
|
||||
assert cstats.values() == ["32"]
|
||||
assert cstats.default_constructions == 1
|
||||
assert cstats.copy_constructions in (2, 1) # SMART_HOLDER_WIP
|
||||
assert cstats.copy_constructions == 2
|
||||
assert cstats.move_constructions >= 2
|
||||
assert cstats.copy_assignments == 0
|
||||
assert cstats.move_assignments == 0
|
||||
|
@ -230,7 +230,7 @@ def test_move_support():
|
||||
assert nc_stats.values() == ["4", "9", "9", "9"]
|
||||
assert mv_stats.values() == ["4", "5", "7", "7"]
|
||||
assert nc_stats.copy_constructions == 0
|
||||
assert mv_stats.copy_constructions in (1, 0) # SMART_HOLDER_WIP
|
||||
assert mv_stats.copy_constructions == 1
|
||||
assert nc_stats.move_constructions >= 0
|
||||
assert mv_stats.move_constructions >= 0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user