Skip to content

Commit bfaec80

Browse files
committed
Also removing operator T() from smart_holder_type_caster, to fix gcc compilation errors. The only loss is pass_rref in test_class_sh_basic.
1 parent a36cac2 commit bfaec80

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

include/pybind11/cast.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010

1111
#pragma once
1212

13+
#ifndef PYBIND11_USE_SMART_HOLDER_AS_DEFAULT
14+
// #define PYBIND11_USE_SMART_HOLDER_AS_DEFAULT
15+
#endif
16+
1317
#include "pytypes.h"
1418
#include "detail/typeid.h"
1519
#include "detail/descr.h"
@@ -1381,6 +1385,8 @@ struct smart_holder_type_caster : smart_holder_type_caster_load<T>,
13811385
return cast(const_cast<T const *>(src), policy, parent); // Mutbl2Const
13821386
}
13831387

1388+
// clang-format off
1389+
13841390
template <typename T_>
13851391
using cast_op_type = conditional_t<
13861392
std::is_same<remove_reference_t<T_>, T const *>::value,
@@ -1389,11 +1395,8 @@ struct smart_holder_type_caster : smart_holder_type_caster_load<T>,
13891395
T *,
13901396
conditional_t<std::is_same<T_, T const &>::value,
13911397
T const &,
1392-
conditional_t<std::is_same<T_, T &>::value, T &, T>>>>;
1393-
1394-
// clang-format off
1398+
T &>>>;
13951399

1396-
operator T() { return this->loaded_as_lvalue_ref(); }
13971400
operator T const&() { return this->loaded_as_lvalue_ref(); }
13981401
operator T&() { return this->loaded_as_lvalue_ref(); }
13991402
operator T const*() { return this->loaded_as_raw_ptr_unowned(); }

tests/test_class_sh_basic.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ atyp const* rtrn_cptr() { return new atyp{"rtrn_cptr"}; }
2626
atyp* rtrn_mptr() { return new atyp{"rtrn_mptr"}; }
2727

2828
std::string pass_valu(atyp obj) { return "pass_valu:" + obj.mtxt; }
29-
std::string pass_rref(atyp&& obj) { return "pass_rref:" + obj.mtxt; }
3029
std::string pass_cref(atyp const& obj) { return "pass_cref:" + obj.mtxt; }
3130
std::string pass_mref(atyp& obj) { return "pass_mref:" + obj.mtxt; }
3231
std::string pass_cptr(atyp const* obj) { return "pass_cptr:" + obj->mtxt; }
@@ -84,7 +83,6 @@ TEST_SUBMODULE(class_sh_basic, m) {
8483
m.def("rtrn_mptr", rtrn_mptr);
8584

8685
m.def("pass_valu", pass_valu);
87-
m.def("pass_rref", pass_rref);
8886
m.def("pass_cref", pass_cref);
8987
m.def("pass_mref", pass_mref);
9088
m.def("pass_cptr", pass_cptr);

tests/test_class_sh_basic.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ def test_cast(rtrn_f, expected):
3939
"pass_f, mtxt, expected",
4040
[
4141
(m.pass_valu, "Valu", "pass_valu:Valu(_MvCtor)*_CpCtor"),
42-
(m.pass_rref, "Rref", "pass_rref:Rref(_MvCtor)*_CpCtor"),
4342
(m.pass_cref, "Cref", "pass_cref:Cref(_MvCtor)*_MvCtor"),
4443
(m.pass_mref, "Mref", "pass_mref:Mref(_MvCtor)*_MvCtor"),
4544
(m.pass_cptr, "Cptr", "pass_cptr:Cptr(_MvCtor)*_MvCtor"),

0 commit comments

Comments
 (0)