std::experimental::propagate_const<T>:: propagate_const
From cppreference.net
<
cpp
|
experimental
|
propagate const
|
constexpr
propagate_const
(
)
=
default
;
|
(1) | (библиотека fundamentals TS v2) |
|
constexpr
propagate_const
(
propagate_const
&&
p
)
=
default
;
|
(2) | (библиотека fundamentals TS v2) |
|
template
<
class
U
>
/* см. ниже */ constexpr propagate_const ( propagate_const < U > && pu ) ; |
(3) | (библиотека fundamentals TS v2) |
|
template
<
class
U
>
/* см. ниже */ constexpr propagate_const ( U && u ) ; |
(4) | (библиотека fundamentals TS v2) |
|
propagate_const
(
const
propagate_const
&
)
=
delete
;
|
(5) | (библиотека fundamentals TS v2) |
Пусть
t_
обозначает приватный член данных, который является обернутым указатель-подобным объектом.
1)
Создает объект
propagate_const
, выполняя инициализацию по умолчанию для
this
-
>
t_
.
2)
Явно заданный перемещающий конструктор, который перемещающий конструирует
this
-
>
t_
из
p.
t_
.
3)
Инициализирует
this
-
>
t_
как при прямой несписочной инициализации из выражения
std
::
move
(
pu.
t_
)
.
Этот конструктор не участвует в разрешении перегрузки, если только std:: is_constructible < T, U > :: value не равно true , и является
Этот конструктор не участвует в разрешении перегрузки, если только std:: is_constructible < T, U > :: value не равно true , и является
explicit
тогда и только тогда, когда
std::
is_convertible
<
U, T
>
::
value
равно
false
.
4)
Инициализирует
this
-
>
t_
как при прямой несписочной инициализации выражением
std::
forward
<
U
>
(
u
)
.
Этот конструктор не участвует в разрешении перегрузки, если только std:: is_constructible < T, U > :: value не равен true и std:: decay_t < U > не является специализацией
Этот конструктор не участвует в разрешении перегрузки, если только std:: is_constructible < T, U > :: value не равен true и std:: decay_t < U > не является специализацией
propagate_const
. Этот конструктор является
explicit
тогда и только тогда, когда
std::
is_convertible
<
U, T
>
::
value
равен
false
.
5)
Конструктор копирования явно удален.
propagate_const
не поддерживает копирование.
Параметры
| p | - |
другой объект
propagate_const
для перемещения
|
| pu | - |
другой объект
propagate_const
другой специализации для перемещения
|
| u | - | другой объект для инициализации содержащегося указателя |
Примечания
В Фундаментальной технической спецификации библиотеки v2 (основанной на C++14),
(4)
и
(5)
обычно реализуются в виде пар перегрузок
explicit
/не-
explicit
. Начиная с Фундаментальной технической спецификации библиотеки v3 (основанной на C++20), они могут быть реализованы с помощью условных спецификаторов
explicit
.