Skip to content

Commit 338d615

Browse files
committed
Temporary fix for the return value cast problem.
pybind11::cast_error: return_value_policy = copy, but the object is non-copyable! May be the same/related issue as described here: pybind#1241
1 parent 2d0507d commit 338d615

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

include/pybind11/cast.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -530,13 +530,14 @@ class type_caster_generic {
530530
break;
531531

532532
case return_value_policy::copy:
533-
if (copy_constructor)
533+
if (copy_constructor) {
534534
valueptr = copy_constructor(src);
535-
else
536-
throw cast_error("return_value_policy = copy, but the "
537-
"object is non-copyable!");
538-
wrapper->owned = true;
539-
break;
535+
wrapper->owned = true;
536+
} else { // Instead of throwing an error, treat as if return_value_policy::reference.
537+
valueptr = src;
538+
wrapper->owned = false;
539+
}
540+
break;
540541

541542
case return_value_policy::move:
542543
if (move_constructor)

0 commit comments

Comments
 (0)