ranges/adjacent: use more cvref_t
This fixes some errors calling the range closure with stack variables.
This commit is contained in:
parent
8eeb35cf36
commit
e3ab977ffa
@ -158,7 +158,7 @@ namespace cruft::ranges {
|
||||
decltype (auto)
|
||||
operator () (V &&v) const
|
||||
{
|
||||
return adjacent_view<V, N> (
|
||||
return adjacent_view<std::remove_cvref_t<V>, N> (
|
||||
std::forward<V> (v)
|
||||
);
|
||||
}
|
||||
|
@ -6,8 +6,8 @@
|
||||
|
||||
int main()
|
||||
{
|
||||
static int constexpr INPUT[] = { 1, 1, 2, 3, 5, 8 };
|
||||
static int constexpr EXPECTED[][2] = {
|
||||
static int const constexpr INPUT[] = { 1, 1, 2, 3, 5, 8 };
|
||||
static int const constexpr EXPECTED[][2] = {
|
||||
{ 1, 1 },
|
||||
{ 1, 2 },
|
||||
{ 2, 3 },
|
||||
@ -17,8 +17,10 @@ int main()
|
||||
|
||||
cruft::TAP::logger tap;
|
||||
|
||||
// Use a temporary in an attempt to trigger cvref related type errors when calling the range closure.
|
||||
std::span<int const> input_span (INPUT);
|
||||
const bool same = std::ranges::equal (
|
||||
std::views::all (INPUT) | cruft::ranges::pairwise,
|
||||
input_span | cruft::ranges::pairwise,
|
||||
EXPECTED,
|
||||
[] (auto const &a, auto const &b) { return std::ranges::equal (a, b); }
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user