std:: reference_converts_from_temporary
|
Определено в заголовочном файле
<type_traits>
|
||
|
template
<
class
T,
class
U
>
struct reference_converts_from_temporary ; |
(начиная с C++23) | |
Пусть
V
будет
std::
remove_cv_t
<
U
>
если
U
является скалярным типом или
cv
void
, иначе
U
. Если
T
является ссылочным типом, и для гипотетического выражения
e
такого, что
decltype
(
e
)
равно
V
, определение переменной
T ref
=
e
;
корректно и
связывает временный объект
с
ref
, тогда предоставляет константу-член
value
равную
true
. В противном случае
value
равно
false
.
Если
T
является типом lvalue-ссылки на const- (но не volatile) квалифицированный тип объекта или типом rvalue-ссылки, то оба
std::
remove_reference_t
<
T
>
и
std::
remove_reference_t
<
U
>
должны быть
полными типами
,
cv
void
, или
массивами неизвестной границы
; иначе поведение не определено.
Если создание экземпляра шаблона выше зависит, прямо или косвенно, от неполного типа, и это создание экземпляра может дать другой результат, если бы этот тип был гипотетически завершен, поведение не определено.
Если программа добавляет специализации для
std::reference_converts_from_temporary
или
std::reference_converts_from_temporary_v
, поведение не определено.
СодержаниеВспомогательный шаблон переменной
Наследуется от std:: integral_constantКонстанты-члены
Функции-члены
Типы-члены
Примечания
Пример
Запустить этот код
#include <type_traits> int main() {} static_assert( std::reference_converts_from_temporary_v<int&&, int> == true && std::reference_converts_from_temporary_v<const int&, int> == true && std::reference_converts_from_temporary_v<int&&, int&&> == false && std::reference_converts_from_temporary_v<const int&, int&&> == false && std::reference_converts_from_temporary_v<int&&, long&&> == true && std::reference_converts_from_temporary_v<int&&, long> == true); Смотрите также
|