Skip to content

Commit c0b6394

Browse files
committed
Take generator again by reference, as it breaks stateful generators
1 parent 9bb9ac0 commit c0b6394

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

include/boost/container/experimental/segmented_generate.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,15 @@ void segmented_generate_dispatch
7070
template <class FwdIt, class Sent, class Generator, class Tag, class Cat>
7171
BOOST_CONTAINER_FORCEINLINE typename algo_enable_if_c<
7272
!Tag::value || is_sentinel<Sent, FwdIt>::value>::type
73-
segmented_generate_dispatch(FwdIt first, Sent last, Generator gen, Tag, Cat)
73+
segmented_generate_dispatch(FwdIt first, Sent last, Generator &gen, Tag, Cat)
7474
{
7575
for(; first != last; ++first)
7676
*first = gen();
7777
}
7878

7979
template <class SegIter, class Generator, class Cat>
8080
void segmented_generate_dispatch
81-
(SegIter first, SegIter last, Generator gen, segmented_iterator_tag, Cat)
81+
(SegIter first, SegIter last, Generator &gen, segmented_iterator_tag, Cat)
8282
{
8383
typedef segmented_iterator_traits<SegIter> traits;
8484
typedef typename traits::local_iterator local_iterator;
@@ -90,15 +90,15 @@ void segmented_generate_dispatch
9090
segment_iterator slast = traits::segment(last);
9191

9292
if(sfirst == slast) {
93-
(segmented_generate_dispatch)(traits::local(first), traits::local(last), boost::move(gen), is_local_seg_t(), local_cat_t());
93+
(segmented_generate_dispatch)(traits::local(first), traits::local(last), gen, is_local_seg_t(), local_cat_t());
9494
}
9595
else {
96-
(segmented_generate_dispatch)(traits::local(first), traits::end(sfirst), boost::move(gen), is_local_seg_t(), local_cat_t());
96+
(segmented_generate_dispatch)(traits::local(first), traits::end(sfirst), gen, is_local_seg_t(), local_cat_t());
9797

9898
for(++sfirst; sfirst != slast; ++sfirst)
99-
(segmented_generate_dispatch)(traits::begin(sfirst), traits::end(sfirst), boost::move(gen), is_local_seg_t(), local_cat_t());
99+
(segmented_generate_dispatch)(traits::begin(sfirst), traits::end(sfirst), gen, is_local_seg_t(), local_cat_t());
100100

101-
(segmented_generate_dispatch)(traits::begin(sfirst), traits::local(last), boost::move(gen), is_local_seg_t(), local_cat_t());
101+
(segmented_generate_dispatch)(traits::begin(sfirst), traits::local(last), gen, is_local_seg_t(), local_cat_t());
102102
}
103103
}
104104

@@ -113,7 +113,7 @@ void segmented_generate(FwdIt first, Sent last, Generator gen)
113113
{
114114
typedef segmented_iterator_traits<FwdIt> traits;
115115
detail_algo::segmented_generate_dispatch
116-
(first, last, boost::move(gen), typename traits::is_segmented_iterator(), typename iterator_traits<FwdIt>::iterator_category());
116+
(first, last, gen, typename traits::is_segmented_iterator(), typename iterator_traits<FwdIt>::iterator_category());
117117
}
118118

119119
} // namespace container

0 commit comments

Comments
 (0)