1111#include < algorithm>
1212#include < cstddef>
1313#include < deque>
14+ #include < forward_list>
1415#include < list>
1516#include < string>
1617#include < vector>
@@ -52,7 +53,7 @@ int main(int argc, char** argv) {
5253 Container subrange (size / 10 , y); // subrange of length 10% of the full range
5354
5455 // put the element we're searching for at 25% of the sequence
55- std::ranges::copy (subrange, std::next (c.begin (), c. size () / 4 ));
56+ std::ranges::copy (subrange, std::next (c.begin (), size / 4 ));
5657
5758 for ([[maybe_unused]] auto _ : st) {
5859 benchmark::DoNotOptimize (c);
@@ -70,17 +71,21 @@ int main(int argc, char** argv) {
7071 bm.operator ()<std::vector<int >>(" std::find_end(vector<int>) (bail 25%)" , std_find_end);
7172 bm.operator ()<std::deque<int >>(" std::find_end(deque<int>) (bail 25%)" , std_find_end);
7273 bm.operator ()<std::list<int >>(" std::find_end(list<int>) (bail 25%)" , std_find_end);
74+ bm.operator ()<std::forward_list<int >>(" std::find_end(forward_list<int>) (bail 25%)" , std_find_end);
7375 bm.operator ()<std::vector<int >>(" rng::find_end(vector<int>) (bail 25%)" , std::ranges::find_end);
7476 bm.operator ()<std::deque<int >>(" rng::find_end(deque<int>) (bail 25%)" , std::ranges::find_end);
7577 bm.operator ()<std::list<int >>(" rng::find_end(list<int>) (bail 25%)" , std::ranges::find_end);
78+ bm.operator ()<std::forward_list<int >>(" rng::find_end(forward_list<int>) (bail 25%)" , std::ranges::find_end);
7679
7780 // {std,ranges}::find_end(it1, it1, it2, it2, pred)
7881 bm.operator ()<std::vector<int >>(" std::find_end(vector<int>, pred) (bail 25%)" , std_find_end_pred);
7982 bm.operator ()<std::deque<int >>(" std::find_end(deque<int>, pred) (bail 25%)" , std_find_end_pred);
8083 bm.operator ()<std::list<int >>(" std::find_end(list<int>, pred) (bail 25%)" , std_find_end_pred);
84+ bm.operator ()<std::forward_list<int >>(" std::find_end(forward_list<int>, pred) (bail 25%)" , std_find_end_pred);
8185 bm.operator ()<std::vector<int >>(" rng::find_end(vector<int>, pred) (bail 25%)" , ranges_find_end_pred);
8286 bm.operator ()<std::deque<int >>(" rng::find_end(deque<int>, pred) (bail 25%)" , ranges_find_end_pred);
8387 bm.operator ()<std::list<int >>(" rng::find_end(list<int>, pred) (bail 25%)" , ranges_find_end_pred);
88+ bm.operator ()<std::forward_list<int >>(" rng::find_end(forward_list<int>, pred) (bail 25%)" , ranges_find_end_pred);
8489 }
8590
8691 // Benchmark {std,ranges}::find_end where the subsequence is found
@@ -98,7 +103,7 @@ int main(int argc, char** argv) {
98103 Container subrange (size / 10 , y); // subrange of length 10% of the full range
99104
100105 // put the element we're searching for at 90% of the sequence
101- std::ranges::copy (subrange, std::next (c.begin (), 9 * (c. size ( ) / 10 ) ));
106+ std::ranges::copy (subrange, std::next (c.begin (), ( 9 * size) / 10 ));
102107
103108 for ([[maybe_unused]] auto _ : st) {
104109 benchmark::DoNotOptimize (c);
@@ -116,17 +121,21 @@ int main(int argc, char** argv) {
116121 bm.operator ()<std::vector<int >>(" std::find_end(vector<int>) (bail 90%)" , std_find_end);
117122 bm.operator ()<std::deque<int >>(" std::find_end(deque<int>) (bail 90%)" , std_find_end);
118123 bm.operator ()<std::list<int >>(" std::find_end(list<int>) (bail 90%)" , std_find_end);
124+ bm.operator ()<std::forward_list<int >>(" std::find_end(forward_list<int>) (bail 90%)" , std_find_end);
119125 bm.operator ()<std::vector<int >>(" rng::find_end(vector<int>) (bail 90%)" , std::ranges::find_end);
120126 bm.operator ()<std::deque<int >>(" rng::find_end(deque<int>) (bail 90%)" , std::ranges::find_end);
121127 bm.operator ()<std::list<int >>(" rng::find_end(list<int>) (bail 90%)" , std::ranges::find_end);
128+ bm.operator ()<std::forward_list<int >>(" rng::find_end(forward_list<int>) (bail 90%)" , std::ranges::find_end);
122129
123130 // {std,ranges}::find_end(it1, it1, it2, it2, pred)
124131 bm.operator ()<std::vector<int >>(" std::find_end(vector<int>, pred) (bail 90%)" , std_find_end_pred);
125132 bm.operator ()<std::deque<int >>(" std::find_end(deque<int>, pred) (bail 90%)" , std_find_end_pred);
126133 bm.operator ()<std::list<int >>(" std::find_end(list<int>, pred) (bail 90%)" , std_find_end_pred);
134+ bm.operator ()<std::forward_list<int >>(" std::find_end(forward_list<int>, pred) (bail 90%)" , std_find_end_pred);
127135 bm.operator ()<std::vector<int >>(" rng::find_end(vector<int>, pred) (bail 90%)" , ranges_find_end_pred);
128136 bm.operator ()<std::deque<int >>(" rng::find_end(deque<int>, pred) (bail 90%)" , ranges_find_end_pred);
129137 bm.operator ()<std::list<int >>(" rng::find_end(list<int>, pred) (bail 90%)" , ranges_find_end_pred);
138+ bm.operator ()<std::forward_list<int >>(" rng::find_end(forward_list<int>, pred) (bail 90%)" , ranges_find_end_pred);
130139 }
131140
132141 benchmark::Initialize (&argc, argv);
0 commit comments