Skip to content

Commit b76b8f1

Browse files
Remove C++23 dependency std::ranges::to
1 parent b85f20d commit b76b8f1

File tree

5 files changed

+30
-16
lines changed

5 files changed

+30
-16
lines changed

CMakeLists.txt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ install(
5656
macro(beman_add_executable)
5757
set(options)
5858
set(oneValueArgs CATEGORY TARGET)
59-
set(multiValueArgs FEATURES SOURCES LIBRARIES)
59+
set(multiValueArgs SOURCES LIBRARIES)
6060

6161
cmake_parse_arguments(
6262
beman_executable
@@ -75,14 +75,10 @@ macro(beman_add_executable)
7575
set(beman_executable_SOURCES "${beman_executable_TARGET}.cpp")
7676
endif()
7777

78-
if(NOT beman_executable_FEATURES)
79-
set(${beman_executable_FEATURES} cxx_std_20)
80-
endif()
81-
8278
add_executable(${target})
8379
# [CMAKE.PASSIVE_PROJECTS]
8480
# set features on executables, not on interface library
85-
target_compile_features(${target} PRIVATE ${beman_executable_FEATURES})
81+
target_compile_features(${target} PRIVATE cxx_std_20)
8682
target_sources(${target} PRIVATE ${beman_executable_SOURCES})
8783
target_link_libraries(
8884
${target}

tests/beman/any_view/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ function(beman_add_test)
2929
gtest_discover_tests(${target})
3030
endfunction()
3131

32-
beman_add_benchmark(TARGET all SOURCES all.benchmark.cpp detail/eager.cpp detail/fused.cpp detail/lazy.cpp detail/products.cpp FEATURES cxx_std_23)
33-
beman_add_benchmark(TARGET take SOURCES take.benchmark.cpp detail/eager.cpp detail/fused.cpp detail/lazy.cpp detail/products.cpp FEATURES cxx_std_23)
32+
beman_add_benchmark(TARGET all SOURCES all.benchmark.cpp detail/eager.cpp detail/fused.cpp detail/lazy.cpp detail/products.cpp)
33+
beman_add_benchmark(TARGET take SOURCES take.benchmark.cpp detail/eager.cpp detail/fused.cpp detail/lazy.cpp detail/products.cpp)
3434

3535
beman_add_test(TARGET concepts SOURCES concepts.test.cpp)
3636
beman_add_test(TARGET constexpr SOURCES constexpr.test.cpp)

tests/beman/any_view/all.benchmark.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ inline void use(std::string_view name) {
1717
}
1818

1919
static void BM_all_eager(benchmark::State& state) {
20-
eager::database db{global_products | std::views::take(state.range(0)) | std::ranges::to<std::vector>()};
20+
const auto size = state.range(0);
21+
const auto begin = global_products.begin();
22+
23+
eager::database db{.products = {begin, begin + size}};
2124

2225
for (auto _ : state) {
2326
for (std::string_view name : db.get_products({.min_quantity = 10})) {
@@ -27,7 +30,10 @@ static void BM_all_eager(benchmark::State& state) {
2730
}
2831

2932
static void BM_all_fused(benchmark::State& state) {
30-
fused::database db{global_products | std::views::take(state.range(0)) | std::ranges::to<std::vector>()};
33+
const auto size = state.range(0);
34+
const auto begin = global_products.begin();
35+
36+
fused::database db{.products = {begin, begin + size}};
3137

3238
for (auto _ : state) {
3339
for (std::string_view name : db.get_products({.min_quantity = 10})) {
@@ -37,7 +43,10 @@ static void BM_all_fused(benchmark::State& state) {
3743
}
3844

3945
static void BM_all_lazy(benchmark::State& state) {
40-
lazy::database db{global_products | std::views::take(state.range(0)) | std::ranges::to<std::vector>()};
46+
const auto size = state.range(0);
47+
const auto begin = global_products.begin();
48+
49+
lazy::database db{.products = {begin, begin + size}};
4150

4251
for (auto _ : state) {
4352
for (std::string_view name : db.get_products({.min_quantity = 10})) {

tests/beman/any_view/detail/products.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ auto generate_random_products(std::size_t count) -> std::vector<product_t> {
3030
std::mt19937 w_rng;
3131
std::uniform_int_distribution<int> w_dist(0, 100);
3232

33-
const auto gen_size = [&] { return w_dist(w_rng); };
33+
const auto gen_size = [&]() -> std::size_t { return w_dist(w_rng); };
3434

3535
for (std::size_t i = 0; i < results.capacity(); ++i) {
36-
results.emplace_back(gen_next_str(), gen_size());
36+
results.push_back(product_t{.name = gen_next_str(), .quantity = gen_size()});
3737
}
3838

3939
return results;

tests/beman/any_view/take.benchmark.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ inline void use(std::string_view name) {
1717
}
1818

1919
static void BM_take_eager(benchmark::State& state) {
20-
eager::database db{global_products | std::views::take(state.range(0)) | std::ranges::to<std::vector>()};
20+
const auto size = state.range(0);
21+
const auto begin = global_products.begin();
22+
23+
eager::database db{.products = {begin, begin + size}};
2124

2225
for (auto _ : state) {
2326
for (std::string_view name : db.get_products({.min_quantity = 10}) | std::views::take(100)) {
@@ -27,7 +30,10 @@ static void BM_take_eager(benchmark::State& state) {
2730
}
2831

2932
static void BM_take_fused(benchmark::State& state) {
30-
fused::database db{global_products | std::views::take(state.range(0)) | std::ranges::to<std::vector>()};
33+
const auto size = state.range(0);
34+
const auto begin = global_products.begin();
35+
36+
fused::database db{.products = {begin, begin + size}};
3137

3238
for (auto _ : state) {
3339
for (std::string_view name : db.get_products({.min_quantity = 10}) | std::views::take(100)) {
@@ -37,7 +43,10 @@ static void BM_take_fused(benchmark::State& state) {
3743
}
3844

3945
static void BM_take_lazy(benchmark::State& state) {
40-
lazy::database db{global_products | std::views::take(state.range(0)) | std::ranges::to<std::vector>()};
46+
const auto size = state.range(0);
47+
const auto begin = global_products.begin();
48+
49+
lazy::database db{.products = {begin, begin + size}};
4150

4251
for (auto _ : state) {
4352
for (std::string_view name : db.get_products({.min_quantity = 10}) | std::views::take(100)) {

0 commit comments

Comments
 (0)