Template
19 lines
479 B
C++
19 lines
479 B
C++
#pragma once
|
|
#include <ranges>
|
|
|
|
namespace core {
|
|
|
|
template<template<typename> typename ViewTemplate>
|
|
class view_closure : public std::ranges::range_adaptor_closure<view_closure<ViewTemplate>>
|
|
{
|
|
public:
|
|
template<std::ranges::viewable_range Range>
|
|
constexpr auto operator()(Range&& range) const
|
|
requires requires { ViewTemplate<std::views::all_t<Range>>{std::forward<Range>(range)}; }
|
|
{
|
|
return ViewTemplate<std::views::all_t<Range>>{std::forward<Range>(range)};
|
|
}
|
|
};
|
|
|
|
}
|