ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::ranges::views::pick< range_itr_t, sequence_t > Struct Template Reference

Range adaptor that selects indexed elements from an input range. More...

#include <detray/utils/ranges/pick.hpp>

Inheritance diagram for detray::ranges::views::pick< range_itr_t, sequence_t >:
[legend]
Collaboration diagram for detray::ranges::views::pick< range_itr_t, sequence_t >:
[legend]

Public Types

using base_type = pick_view<range_itr_t, sequence_itr_t>
 Base view implementation combining range and sequence iterators.
using sequence_itr_t
 Iterator type used to read the selection sequence.

Public Member Functions

template<detray::ranges::input_range deduced_sequence_t>
constexpr pick (deduced_sequence_t &&seq)
 Build an adaptor that will select the supplied indices from a later range.
template<detray::ranges::range range_t, detray::ranges::input_range deduced_sequence_t>
constexpr pick (range_t &&range, deduced_sequence_t &&seq)
 Construct the selection view immediately from both inputs.
template<detray::ranges::range range_t>
requires (!std::same_as<sequence_t, std::remove_cvref_t<sequence_t>> || std::is_pointer_v<sequence_t>)
constexpr auto operator() (range_t &&rng)
 Call operator for range composition.
template<detray::ranges::range range_t>
requires (std::same_as<sequence_t, std::remove_cvref_t<sequence_t>> && !std::is_pointer_v<sequence_t>)
constexpr auto operator() (range_t &&rng) &&
 Call operator for range composition - move semantics.
pick & operator= (const pick &other)
 Copy assignment operator.
Public Member Functions inherited from detray::ranges::view_interface< pick_view< range_itr_t, sequence_itr_t > >
constexpr decltype(auto) back () const
 Return a reference to the last element.
constexpr auto data () const
 Return a pointer to the first element, or null for an empty view.
constexpr auto empty () const -> bool
 Check whether the view contains no elements.
constexpr decltype(auto) front () const
 Return a reference to the first element.
constexpr operator bool () const
 Test whether the view contains at least one element.
constexpr decltype(auto) operator[] (const dindex i) const
 Subscript operator that takes detray dindex.
constexpr auto size () const
 Return the number of elements in the view.

Detailed Description

template<std::input_iterator range_itr_t, detray::ranges::input_range sequence_t>
struct detray::ranges::views::pick< range_itr_t, sequence_t >

Range adaptor that selects indexed elements from an input range.

Member Typedef Documentation

◆ sequence_itr_t

template<std::input_iterator range_itr_t, detray::ranges::input_range sequence_t>
using detray::ranges::views::pick< range_itr_t, sequence_t >::sequence_itr_t
Initial value:
detray::ranges::const_iterator_t<std::decay_t<sequence_t>>

Iterator type used to read the selection sequence.

Constructor & Destructor Documentation

◆ pick() [1/2]

template<std::input_iterator range_itr_t, detray::ranges::input_range sequence_t>
template<detray::ranges::input_range deduced_sequence_t>
detray::ranges::views::pick< range_itr_t, sequence_t >::pick ( deduced_sequence_t && seq)
explicitconstexpr

Build an adaptor that will select the supplied indices from a later range.

Parameters
seqsequence of indices to use

◆ pick() [2/2]

template<std::input_iterator range_itr_t, detray::ranges::input_range sequence_t>
template<detray::ranges::range range_t, detray::ranges::input_range deduced_sequence_t>
detray::ranges::views::pick< range_itr_t, sequence_t >::pick ( range_t && range,
deduced_sequence_t && seq )
constexpr

Construct the selection view immediately from both inputs.

Parameters
rangerange from which elements are selected
seqsequence of indices to use

Member Function Documentation

◆ operator()() [1/2]

template<std::input_iterator range_itr_t, detray::ranges::input_range sequence_t>
template<detray::ranges::range range_t>
requires (!std::same_as<sequence_t, std::remove_cvref_t<sequence_t>> || std::is_pointer_v<sequence_t>)
auto detray::ranges::views::pick< range_itr_t, sequence_t >::operator() ( range_t && rng)
constexpr

Call operator for range composition.

Parameters
rngrange from which elements are selected
Returns
view using the stored selection sequence

◆ operator()() [2/2]

template<std::input_iterator range_itr_t, detray::ranges::input_range sequence_t>
template<detray::ranges::range range_t>
requires (std::same_as<sequence_t, std::remove_cvref_t<sequence_t>> && !std::is_pointer_v<sequence_t>)
auto detray::ranges::views::pick< range_itr_t, sequence_t >::operator() ( range_t && rng) &&
constexpr

Call operator for range composition - move semantics.

Parameters
rngrange from which elements are selected
Returns
view that owns the moved selection sequence

◆ operator=()

template<std::input_iterator range_itr_t, detray::ranges::input_range sequence_t>
pick & detray::ranges::views::pick< range_itr_t, sequence_t >::operator= ( const pick< range_itr_t, sequence_t > & other)

Copy assignment operator.

Parameters
otheradaptor to copy
Returns
reference to this adaptor