|
20 | 20 |
|
21 | 21 | namespace detail { |
22 | 22 | // adds constructors of t_rac... containers |
23 | | -template <typename... t_rac> |
24 | | -typename std::enable_if<sizeof...(t_rac) == 0>::type add_rac_constructor(const auto&) {} |
| 23 | +template <typename PybindClass, typename... t_rac> |
| 24 | +typename std::enable_if<sizeof...(t_rac) == 0>::type add_rac_constructor(const PybindClass&) {} |
25 | 25 |
|
26 | | -template <typename t_rac_head, typename... t_rac_tail> |
27 | | -void add_rac_constructor(auto& cls) { |
| 26 | +template <typename PybindClass, typename t_rac_head, typename... t_rac_tail> |
| 27 | +void add_rac_constructor(PybindClass& cls) { |
28 | 28 | cls.def(py::init([](const t_rac_head* rac) { |
29 | | - return typename std::remove_reference<decltype(cls)>::type::type(rac); |
| 29 | + return typename PybindClass::type(rac); |
30 | 30 | })); |
31 | | - add_rac_constructor<t_rac_tail...>(cls); |
| 31 | + add_rac_constructor<PybindClass, t_rac_tail...>(cls); |
32 | 32 | } |
33 | 33 | } |
34 | 34 |
|
@@ -98,7 +98,7 @@ struct add_rmq_sada_functor { |
98 | 98 | (typename T::size_type |
99 | 99 | (T::*)(typename T::size_type, typename T::size_type) const)& T::operator()); |
100 | 100 |
|
101 | | - detail::add_rac_constructor<t_rac...>(cls); |
| 101 | + detail::add_rac_constructor<decltype(cls), t_rac...>(cls); |
102 | 102 |
|
103 | 103 | add_sizes(cls); |
104 | 104 | add_description(cls); |
@@ -133,7 +133,8 @@ struct add_rmq_sct_functor { |
133 | 133 | (typename T::size_type |
134 | 134 | (T::*)(typename T::size_type, typename T::size_type) const)& T::operator()); |
135 | 135 |
|
136 | | - detail::add_rac_constructor<t_rac...>(cls); |
| 136 | + |
| 137 | + detail::add_rac_constructor<decltype(cls), t_rac...>(cls); |
137 | 138 |
|
138 | 139 | add_sizes(cls); |
139 | 140 | add_description(cls); |
|
0 commit comments