std::experimental::ranges:: reference_t, std::experimental::ranges:: rvalue_reference_t, std::experimental::ranges:: iter_common_reference_t
|
Определено в заголовочном файле
<experimental/ranges/iterator>
|
||
|
template
<
class
T
>
concept bool /*dereferenceable*/ = requires ( T & t ) { { * t } - > auto && ; } ; |
( только для демонстрации* ) | |
|
template
<
/*dereferenceable*/
T
>
using reference_t = decltype ( * declval < T & > ( ) ) ; |
(1) | (ranges TS) |
|
template
<
/*dereferenceable*/
T
>
requires requires
(
T
&
t
)
{
{
ranges::
iter_move
(
t
)
}
-
>
auto
&&
;
}
|
(2) | (ranges TS) |
|
template
<
Readable T
>
using
iter_common_reference_t
=
ranges::
common_reference_t
<
ranges
::
reference_t
<
T
>
,
|
(3) | (ranges TS) |
T
.
T
, то есть тип возвращаемого значения
ranges::iter_move
.
Readable
тип
общего ссылочного типа
. Это общий ссылочный тип его ссылочного типа и ссылки на lvalue его типа значения.
Примечания
Ограничение - > auto && проверяет, что тип выражения не является void .