Skip to content

Commit f0b9580

Browse files
committed
Adds support for temporaries
1 parent 279cd2d commit f0b9580

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

compress.hpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
#include <iterbase.hpp>
55

6-
76
#include <utility>
87

98
namespace iter {
@@ -13,7 +12,7 @@ namespace iter {
1312
class Compressed;
1413

1514
template <typename Container, typename Selector>
16-
Compressed<Container, Selector> compress(Container &, Selector &);
15+
Compressed<Container, Selector> compress(Container &&, Selector &&);
1716

1817

1918
template <typename Container, typename Selector>
@@ -25,7 +24,7 @@ namespace iter {
2524
// The only thing allowed to directly instantiate an Compressed is
2625
// the compress function
2726
friend Compressed compress<Container, Selector>(
28-
Container &, Selector &);
27+
Container &&, Selector &&);
2928

3029
using typename IterBase<Container>::contained_iter_type;
3130

@@ -35,7 +34,7 @@ namespace iter {
3534
using selector_iter_type = decltype(std::begin(selectors));
3635

3736
// Value constructor for use only in the compress function
38-
Compressed(Container & container, Selector & selectors) :
37+
Compressed(Container && container, Selector && selectors) :
3938
container(container),
4039
selectors(selectors)
4140
{ }
@@ -111,8 +110,10 @@ namespace iter {
111110
// Helper function to instantiate an Compressed
112111
template <typename Container, typename Selector>
113112
Compressed<Container, Selector> compress(
114-
Container & container, Selector & selectors) {
115-
return Compressed<Container, Selector>(container, selectors);
113+
Container && container, Selector && selectors) {
114+
return Compressed<Container, Selector>(
115+
std::forward<Container>(container),
116+
std::forward<Selector>(selectors));
116117
}
117118

118119
}

0 commit comments

Comments
 (0)