Consolidated most patches into one for easier review and added documentation for all missing built-in traits.
Ok for trunk? -- >8 -- This patch arranges pre-existing built-in traits alphabetically for better codebase consistency and easier future integration of changes. gcc/ChangeLog: * doc/extend.texi (Type Traits): Arrange pre-existing built-in traits alphabetically. Signed-off-by: Ken Matsui <kmat...@gcc.gnu.org> --- gcc/doc/extend.texi | 50 ++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index df0982fdfda..1c61682b102 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -29500,15 +29500,6 @@ Requires: @var{type} shall be a complete type, (possibly cv-qualified) @code{void}, or an array of unknown bound. @enddefbuiltin -@defbuiltin{bool __has_nothrow_copy (@var{type})} -If @code{__has_trivial_copy (type)} is @code{true} then the trait is -@code{true}, else if @var{type} is a cv-qualified class or union type -with copy constructors that are known not to throw an exception then -the trait is @code{true}, else it is @code{false}. -Requires: @var{type} shall be a complete type, (possibly cv-qualified) -@code{void}, or an array of unknown bound. -@enddefbuiltin - @defbuiltin{bool __has_nothrow_constructor (@var{type})} If @code{__has_trivial_constructor (type)} is @code{true} then the trait is @code{true}, else if @var{type} is a cv class or union type (or array @@ -29518,6 +29509,15 @@ Requires: @var{type} shall be a complete type, (possibly cv-qualified) @code{void}, or an array of unknown bound. @enddefbuiltin +@defbuiltin{bool __has_nothrow_copy (@var{type})} +If @code{__has_trivial_copy (type)} is @code{true} then the trait is +@code{true}, else if @var{type} is a cv-qualified class or union type +with copy constructors that are known not to throw an exception then +the trait is @code{true}, else it is @code{false}. +Requires: @var{type} shall be a complete type, (possibly cv-qualified) +@code{void}, or an array of unknown bound. +@enddefbuiltin + @defbuiltin{bool __has_trivial_assign (@var{type})} If @var{type} is @code{const}- qualified or is a reference type then the trait is @code{false}. Otherwise if @code{__is_trivial (type)} is @@ -29528,15 +29528,6 @@ Requires: @var{type} shall be a complete type, (possibly cv-qualified) @code{void}, or an array of unknown bound. @enddefbuiltin -@defbuiltin{bool __has_trivial_copy (@var{type})} -If @code{__is_trivial (type)} is @code{true} or @var{type} is a reference -type then the trait is @code{true}, else if @var{type} is a cv class -or union type with a trivial copy constructor ([class.copy]) then the trait -is @code{true}, else it is @code{false}. Requires: @var{type} shall be -a complete type, (possibly cv-qualified) @code{void}, or an array of unknown -bound. -@enddefbuiltin - @defbuiltin{bool __has_trivial_constructor (@var{type})} If @code{__is_trivial (type)} is @code{true} then the trait is @code{true}, else if @var{type} is a cv-qualified class or union type (or array thereof) @@ -29546,6 +29537,15 @@ Requires: @var{type} shall be a complete type, (possibly cv-qualified) @code{void}, or an array of unknown bound. @enddefbuiltin +@defbuiltin{bool __has_trivial_copy (@var{type})} +If @code{__is_trivial (type)} is @code{true} or @var{type} is a reference +type then the trait is @code{true}, else if @var{type} is a cv class +or union type with a trivial copy constructor ([class.copy]) then the trait +is @code{true}, else it is @code{false}. Requires: @var{type} shall be +a complete type, (possibly cv-qualified) @code{void}, or an array of unknown +bound. +@enddefbuiltin + @defbuiltin{bool __has_trivial_destructor (@var{type})} If @code{__is_trivial (type)} is @code{true} or @var{type} is a reference type then the trait is @code{true}, else if @var{type} is a cv class or union @@ -29561,6 +29561,13 @@ If @var{type} is a class type with a virtual destructor Requires: If @var{type} is a non-union class type, it shall be a complete type. @enddefbuiltin +@defbuiltin{bool __integer_pack (@var{length})} +When used as the pattern of a pack expansion within a template +definition, expands to a template argument pack containing integers +from @code{0} to @code{@var{length}-1}. This is provided for +efficient implementation of @code{std::make_integer_sequence}. +@enddefbuiltin + @defbuiltin{bool __is_abstract (@var{type})} If @var{type} is an abstract class ([class.abstract]) then the trait is @code{true}, else it is @code{false}. @@ -29662,13 +29669,6 @@ The underlying type of @var{type}. Requires: @var{type} shall be an enumeration type ([dcl.enum]). @enddefbuiltin -@defbuiltin{bool __integer_pack (@var{length})} -When used as the pattern of a pack expansion within a template -definition, expands to a template argument pack containing integers -from @code{0} to @code{@var{length}-1}. This is provided for -efficient implementation of @code{std::make_integer_sequence}. -@enddefbuiltin - @node C++ Concepts @section C++ Concepts -- 2.44.0