Skip to content

Commit 6ca312b

Browse files
sdebionnewjakob
authored andcommitted
Avoid infinite recursion in is_copy_constructible (#1910)
1 parent c9f5a46 commit 6ca312b

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

include/pybind11/cast.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -775,7 +775,9 @@ template <typename T, typename SFINAE = void> struct is_copy_constructible : std
775775
// so, copy constructability depends on whether the value_type is copy constructible.
776776
template <typename Container> struct is_copy_constructible<Container, enable_if_t<all_of<
777777
std::is_copy_constructible<Container>,
778-
std::is_same<typename Container::value_type &, typename Container::reference>
778+
std::is_same<typename Container::value_type &, typename Container::reference>,
779+
// Avoid infinite recursion
780+
negation<std::is_same<Container, typename Container::value_type>>
779781
>::value>> : is_copy_constructible<typename Container::value_type> {};
780782

781783
#if !defined(PYBIND11_CPP17)

0 commit comments

Comments
 (0)