23#ifndef VCL_MESH_VIEWS_COMPONENTS_SELECTION_H
24#define VCL_MESH_VIEWS_COMPONENTS_SELECTION_H
26#include <vclib/base.h>
34inline constexpr auto isSelected = [](
auto&& e) ->
decltype(
auto) {
43inline constexpr auto isNotSelected = [](
auto&& e) ->
decltype(
auto) {
45 return !e->selected();
54 constexpr SelectionView() =
default;
56 template<std::ranges::range R>
57 friend constexpr auto operator|(R&& r, SelectionView)
59 return std::forward<R>(r) | std::views::transform(isSelected);
65 constexpr SelectedView() =
default;
67 template<std::ranges::range R>
68 friend constexpr auto operator|(R&& r, SelectedView)
70 return std::forward<R>(r) | std::views::filter(isSelected);
76 constexpr NotSelectedView() =
default;
78 template<std::ranges::range R>
79 friend constexpr auto operator|(R&& r, NotSelectedView)
81 return std::forward<R>(r) | std::views::filter(isNotSelected);
87inline constexpr detail::SelectionView selection;
88inline constexpr detail::SelectedView selected;
89inline constexpr detail::NotSelectedView notSelected;
The IsPointer concept is satisfied if T is a Pointer, even if the type T is a reference to a pointer.
Definition pointers.h:54