template template auto &this_ = static_cast(*this); if (load_impl(temp, false)) { ssize_t nd = 0; auto trivial = broadcast(buffers, nd, shape); auto ndim = (size_t) nd; int nd; ssize_t ndim() const { return detail::array_proxy(m_ptr)->nd; } using op = op_impl; template template class_ &def(const detail::op_ &op, const Extra &...extra) { class_ &def_cast(const detail::op_ &op, const Extra &...extra) { int valu; explicit movable_int(int v) : valu{v} {} movable_int(movable_int &&other) noexcept : valu(other.valu) { other.valu = 91; } explicit indestructible_int(int v) : valu{v} {} REQUIRE(hld.as_raw_ptr_unowned()->valu == 19); REQUIRE(othr.valu == 19); REQUIRE(orig.valu == 91); (m.pass_valu, "Valu", "pass_valu:Valu(_MvCtor)*_CpCtor"), atyp_valu rtrn_valu() { atyp_valu obj{"Valu"}; return obj; } assert m.atyp_valu().get_mtxt() == "Valu" // valu(e), ref(erence), ptr or p (pointer), r = rvalue, m = mutable, c = const, @pytest.mark.parametrize("access", ["ro", "rw", "static_ro", "static_rw"]) struct IntStruct { explicit IntStruct(int v) : value(v){}; ~IntStruct() { value = -value; } IntStruct(const IntStruct &) = default; IntStruct &operator=(const IntStruct &) = default; py::class_(m, "IntStruct").def(py::init([](const int i) { return IntStruct(i); })); py::implicitly_convertible(); m.def("test", [](int expected, const IntStruct &in) { [](int expected, const IntStruct &in) {