3939
4040namespace hydra {
4141
42-
43- template <typename RNG, typename IteratorData, typename IteratorWeight, hydra::detail::Backend BACKEND>
42+ template <typename RNG, typename DerivedPolicy, typename IteratorData, typename IteratorWeight>
4443typename std::enable_if<
4544 detail::random::is_iterator<IteratorData>::value && detail::random::is_iterator<IteratorWeight>::value,
4645 Range<IteratorData>
4746>::type
48- unweight ( detail::BackendPolicy<BACKEND > const & policy, IteratorData data_begin, IteratorData data_end, IteratorWeight weights_begin)
47+ unweight ( hydra_thrust:: detail::execution_policy_base<DerivedPolicy > const & policy, IteratorData data_begin, IteratorData data_end, IteratorWeight weights_begin)
4948{
5049
5150 typedef typename IteratorWeight::value_type value_type;
@@ -68,6 +67,19 @@ unweight( detail::BackendPolicy<BACKEND> const& policy, IteratorData data_begin,
6867 return make_range (begin , r);
6968}
7069
70+
71+ template <typename RNG, typename IteratorData, typename IteratorWeight, hydra::detail::Backend BACKEND>
72+ typename std::enable_if<
73+ detail::random::is_iterator<IteratorData>::value && detail::random::is_iterator<IteratorWeight>::value,
74+ Range<IteratorData>
75+ >::type
76+ unweight ( detail::BackendPolicy<BACKEND> const & policy, IteratorData data_begin, IteratorData data_end, IteratorWeight weights_begin)
77+ {
78+
79+
80+ return unweight<RNG>(policy.backend , data_begin, data_end, weights_begin);
81+ }
82+
7183template < typename RNG, typename IteratorData, typename IteratorWeight>
7284typename std::enable_if<
7385detail::random::is_iterator<IteratorData>::value && detail::random::is_iterator<IteratorWeight>::value,
@@ -116,17 +128,18 @@ unweight( IterableData&& data, IterableWeight&& weights)
116128}
117129
118130
119- template < typename RNG, typename Functor, typename Iterator, hydra::detail::Backend BACKEND >
131+ template < typename RNG, typename Functor, typename Iterator, typename DerivedPolicy >
120132typename std::enable_if<
121133 detail::random::is_callable<Functor>::value && detail::random::is_iterator<Iterator>::value,
122134 Range<Iterator>
123135>::type
124- unweight ( detail::BackendPolicy<BACKEND> const & policy, Iterator begin, Iterator end, Functor const & functor)
136+ unweight (hydra_thrust:: detail::execution_policy_base<DerivedPolicy> const & policy, Iterator begin, Iterator end, Functor const & functor)
125137{
126138
127139 typedef typename Functor::return_type value_type;
128140
129- typedef hydra_thrust::pointer<value_type, typename detail::BackendPolicy<BACKEND>::execution_policy_type::tag_type> pointer_type;
141+ typedef hydra_thrust::pointer<value_type,
142+ typename hydra_thrust::detail::execution_policy_base<DerivedPolicy>::tag_type> pointer_type;
130143
131144 typedef detail::RndFlag<value_type,pointer_type, RNG > flagger_type;
132145
@@ -153,6 +166,19 @@ unweight( detail::BackendPolicy<BACKEND> const& policy, Iterator begin, Iterator
153166
154167}
155168
169+
170+ template < typename RNG, typename Functor, typename Iterator, hydra::detail::Backend BACKEND>
171+ typename std::enable_if<
172+ detail::random::is_callable<Functor>::value && detail::random::is_iterator<Iterator>::value,
173+ Range<Iterator>
174+ >::type
175+ unweight ( detail::BackendPolicy<BACKEND> const & policy, Iterator begin, Iterator end, Functor const & functor)
176+ {
177+
178+ return unweight<RNG>(policy.backend , begin, end, functor );
179+
180+ }
181+
156182template <typename RNG, typename Functor, typename Iterator>
157183typename std::enable_if<
158184 detail::random::is_callable<Functor>::value && detail::random::is_iterator<Iterator>::value,
0 commit comments