From 2d327f99780c1381b22360ce78d7ad2ee5aa7d8c Mon Sep 17 00:00:00 2001
From: Enrico Seiler <enrico.seiler@hotmail.de>
Date: Tue, 2 May 2023 12:25:45 +0200
Subject: [PATCH] [FIX] GCC13 bogus dangling reference warning

---
 include/raptor/search/search_singular_ibf.hpp            | 2 +-
 src/search/search_partitioned_ibf.cpp                    | 4 ++--
 test/performance/bin_influence_benchmark.cpp             | 2 +-
 util/applications/src/iScience/generate_reads.cpp        | 2 +-
 util/applications/src/iScience/generate_reads_refseq.cpp | 3 +--
 util/applications/src/iScience/threshold_info.cpp        | 2 +-
 util/iScience/thresholding/src/random_data.cpp           | 2 +-
 7 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/include/raptor/search/search_singular_ibf.hpp b/include/raptor/search/search_singular_ibf.hpp
index d7b48f5a..9615561d 100644
--- a/include/raptor/search/search_singular_ibf.hpp
+++ b/include/raptor/search/search_singular_ibf.hpp
@@ -65,7 +65,7 @@ void search_singular_ibf(search_arguments const & arguments, index_t && index)
                                                           seqan3::window_size{arguments.window_size},
                                                           seqan3::seed{adjust_seed(arguments.shape_weight)});
 
-        for (auto && [id, seq] : records | seqan3::views::slice(start, end))
+        for (auto && [id, seq] : seqan3::views::slice(records, start, end))
         {
             result_string.clear();
             result_string += id;
diff --git a/src/search/search_partitioned_ibf.cpp b/src/search/search_partitioned_ibf.cpp
index 909e213e..ebae526b 100644
--- a/src/search/search_partitioned_ibf.cpp
+++ b/src/search/search_partitioned_ibf.cpp
@@ -82,7 +82,7 @@ void search_partitioned_ibf(search_arguments const & arguments)
                                                            seqan3::window_size{arguments.window_size},
                                                            seqan3::seed{adjust_seed(arguments.shape_weight)});
 
-            for (auto && [id, seq] : records | seqan3::views::slice(start, end))
+            for (auto && [id, seq] : seqan3::views::slice(records, start, end))
             {
                 auto minimiser_view = seq | hash_view | std::views::common;
                 local_compute_minimiser_timer.start();
@@ -135,7 +135,7 @@ void search_partitioned_ibf(search_arguments const & arguments)
                                                               seqan3::window_size{arguments.window_size},
                                                               seqan3::seed{adjust_seed(arguments.shape_weight)});
 
-            for (auto && [id, seq] : records | seqan3::views::slice(start, end))
+            for (auto && [id, seq] : seqan3::views::slice(records, start, end))
             {
                 result_string.clear();
                 result_string += id;
diff --git a/test/performance/bin_influence_benchmark.cpp b/test/performance/bin_influence_benchmark.cpp
index a284ae12..81384e0f 100644
--- a/test/performance/bin_influence_benchmark.cpp
+++ b/test/performance/bin_influence_benchmark.cpp
@@ -62,7 +62,7 @@ static std::vector<std::vector<seqan3::dna4>> const reads{
         for (auto && read_start :
              seqan3::test::generate_numeric_sequence<size_t>(read_count, 0, genome_size - read_size - 1, 0))
         {
-            auto v = genome | seqan3::views::slice(read_start, read_start + read_size);
+            auto v = seqan3::views::slice(genome, read_start, read_start + read_size);
             result[i++].assign(v.begin(), v.end());
         }
         return result;
diff --git a/util/applications/src/iScience/generate_reads.cpp b/util/applications/src/iScience/generate_reads.cpp
index 82a2f249..f27694e7 100644
--- a/util/applications/src/iScience/generate_reads.cpp
+++ b/util/applications/src/iScience/generate_reads.cpp
@@ -75,7 +75,7 @@ void run_program(config const & cfg)
                  ++current_read_number, ++read_counter, ++reads_per_bin_counter)
             {
                 size_t const read_start_pos = read_start_dis(rng);
-                auto read_slice = seq | seqan3::views::slice(read_start_pos, read_start_pos + cfg.read_length);
+                auto read_slice = seqan3::views::slice(seq, read_start_pos, read_start_pos + cfg.read_length);
                 read.assign(read_slice.begin(), read_slice.end());
 
                 introduce_errors();
diff --git a/util/applications/src/iScience/generate_reads_refseq.cpp b/util/applications/src/iScience/generate_reads_refseq.cpp
index 9bdb2541..407ab93c 100644
--- a/util/applications/src/iScience/generate_reads_refseq.cpp
+++ b/util/applications/src/iScience/generate_reads_refseq.cpp
@@ -117,8 +117,7 @@ void run_program(cmd_arguments const & arguments)
                      ++current_read_number, ++read_counter, ++bin_read_counter)
                 {
                     uint64_t const read_start_pos = read_start_dis(rng);
-                    auto read_slice =
-                        seq | seqan3::views::slice(read_start_pos, read_start_pos + arguments.read_length);
+                    auto read_slice = seqan3::views::slice(seq, read_start_pos, read_start_pos + arguments.read_length);
                     read.assign(read_slice.begin(), read_slice.end());
 
                     for (uint8_t error_count = 0; error_count < arguments.errors; ++error_count)
diff --git a/util/applications/src/iScience/threshold_info.cpp b/util/applications/src/iScience/threshold_info.cpp
index 9e16358a..b1e55bcf 100644
--- a/util/applications/src/iScience/threshold_info.cpp
+++ b/util/applications/src/iScience/threshold_info.cpp
@@ -51,7 +51,7 @@ void threshold_info(raptor::search_arguments const & arguments, std::string cons
                                                           seqan3::window_size{arguments.window_size},
                                                           seqan3::seed{raptor::adjust_seed(kmer_size)});
 
-        for (auto && [seq] : records | seqan3::views::slice(start, end))
+        for (auto && [seq] : seqan3::views::slice(records, start, end))
         {
             size_t const minimiser_count{static_cast<size_t>(std::ranges::distance(seq | hash_adaptor))};
 
diff --git a/util/iScience/thresholding/src/random_data.cpp b/util/iScience/thresholding/src/random_data.cpp
index 80ed188c..df33b87e 100644
--- a/util/iScience/thresholding/src/random_data.cpp
+++ b/util/iScience/thresholding/src/random_data.cpp
@@ -60,7 +60,7 @@ void run_program(std::filesystem::path const & out_directory,
             for (size_t i = 0; i < number_of_queries; ++i)
             {
                 size_t start = dis_pos(gen);
-                auto query_slice = reference_sequence | seqan3::views::slice(start, start + query_length);
+                auto query_slice = seqan3::views::slice(reference_sequence, start, start + query_length);
                 query_sequence.assign(query_slice.begin(), query_slice.end());
 
                 for (size_t j = 0; j < errors; ++j)
