diff --git a/source/meta.tex b/source/meta.tex index c76fa23ee5..c5240317d0 100644 --- a/source/meta.tex +++ b/source/meta.tex @@ -259,6 +259,7 @@ template struct is_aggregate; template struct is_consteval_only; + template struct is_structural; template struct is_signed; template struct is_unsigned; template struct is_bounded_array; @@ -512,6 +513,8 @@ constexpr bool @\libglobal{is_aggregate_v}@ = is_aggregate::value; template constexpr bool @\libglobal{is_consteval_only_v}@ = is_consteval_only::value; + template + constexpr bool @\libglobal{is_structural_v}@ = is_structural::value; template constexpr bool @\libglobal{is_signed_v}@ = is_signed::value; template @@ -1203,6 +1206,12 @@ \tcode{T} is consteval-only\iref{basic.types.general} & \tcode{remove_all_extents_t} shall be a complete type or \cv~\keyword{void}. \\ \rowsep +\indexlibraryglobal{is_structural}% +\tcode{template}\br + \tcode{struct is_structural;} & + \tcode{T} is a structural type\iref{temp.param} & + \tcode{remove_all_extents_t} shall be a complete type or \cv~\keyword{void}. \\ \rowsep + \indexlibrary{\idxcode{is_signed}!class}% \tcode{template}\br \tcode{struct is_signed;} & @@ -3152,6 +3161,7 @@ consteval bool is_final_type(info type); consteval bool is_aggregate_type(info type); consteval bool is_consteval_only_type(info type); + consteval bool is_structural_type(info type); consteval bool is_signed_type(info type); consteval bool is_unsigned_type(info type); consteval bool is_bounded_array_type(info type); @@ -6802,6 +6812,7 @@ consteval bool @\libglobal{is_final_type}@(info type); consteval bool @\libglobal{is_aggregate_type}@(info type); consteval bool @\libglobal{is_consteval_only_type}@(info type); +consteval bool @\libglobal{is_structural_type}@(info type); consteval bool @\libglobal{is_signed_type}@(info type); consteval bool @\libglobal{is_unsigned_type}@(info type); consteval bool @\libglobal{is_bounded_array_type}@(info type); diff --git a/source/support.tex b/source/support.tex index 203a1bf45f..c751b007f1 100644 --- a/source/support.tex +++ b/source/support.tex @@ -746,6 +746,8 @@ #define @\defnlibxname{cpp_lib_is_null_pointer}@ 201309L // freestanding, also in \libheader{type_traits} #define @\defnlibxname{cpp_lib_is_pointer_interconvertible}@ 201907L // freestanding, also in \libheader{type_traits} #define @\defnlibxname{cpp_lib_is_scoped_enum}@ 202011L // freestanding, also in \libheader{type_traits} +#define @\defnlibxname{cpp_lib_is_structural}@ 202603L + // freestanding, also in \libheader{meta} and \libheader{type_traits} #define @\defnlibxname{cpp_lib_is_sufficiently_aligned}@ 202411L // freestanding, also in \libheader{memory} #define @\defnlibxname{cpp_lib_is_swappable}@ 201603L // freestanding, also in \libheader{type_traits} #define @\defnlibxname{cpp_lib_is_virtual_base_of}@ 202406L // freestanding, also in \libheader{type_traits}