Skip to content

LiteFX::Enumerable::Enumerable

Creates a new Enumerable instance from an underlying range.

Synopsis

Declared in <litefx/containers.hpp>

template<typename TRange>
requires (
            !is_enumerable_v<std::remove_cvref_t<TRange>> &&
            std::ranges::viewable_range<TRange>&& std::ranges::forward_range<TRange> &&                                                             // The source range must be viewable and forward iterable.
            std::convertible_to<std::ranges::range_reference_t<decltype(std::views::common(std::declval<TRange>()))>, T> &&                         // The elements of the source range must be convertible to the elements of the enumerable.
            !(std::is_reference_v<T> && !std::is_reference_v<std::ranges::range_reference_t<decltype(std::views::common(std::declval<TRange>()))>>) // The source range must not yield temporaries (they would dangle).
        )
Enumerable(TRange&& range);

Template Parameters

NameDescription
TRangeThe type of the underlying range.

Parameters

NameDescription
rangeA reference of the underlying range.