Namespaces
Variants

std::experimental::ranges:: dangling, std::experimental::ranges:: safe_iterator_t

From cppreference.net
Определено в заголовочном файле <experimental/ranges/iterator>
template < CopyConstructible T >

class dangling {
public :
dangling ( ) requires DefaultConstructible < T > ( ) ;
dangling ( T t ) ;
T get_unsafe ( ) const ;

} ;
(ranges TS)
template < Range R >

using safe_iterator_t = std:: conditional_t < std:: is_lvalue_reference < R > :: value ,
ranges:: iterator_t < R > ,

ranges:: dangling < ranges:: iterator_t < R >> ;
(ranges TS)

Шаблон класса dangling представляет собой простую обёртку вокруг объекта, указывающую, что обёрнутый объект может быть висячим , то есть он ссылается на другой объект, время жизни которого, возможно, завершилось.

Псевдоним-шаблон safe_iterator_t возвращает тип итератора R , обёрнутый в dangling если диапазон был rvalue-диапазоном (что указывается тем, что R не является типом lvalue-ссылки).

Они используются алгоритмами диапазонов, которые принимают rvalue диапазоны и возвращают итераторы в них.

Функции-члены

std::experimental::ranges::dangling:: dangling

dangling ( ) requires DefaultConstructible < T > ( ) ;
(1)
dangling ( T t ) ;
(2)
1) Конструктор по умолчанию. Инициализирует значение обёрнутого объекта.
2) Инициализирует обёрнутый объект значением t . Обратите внимание, что этот конструктор определяет неявное преобразование из T в dangling<T> .

std::experimental::ranges::dangling:: get_unsafe

T get_unsafe ( ) const ;

Возвращает копию обернутого объекта.