diff mbox series

[01/11] gcc/doc/extend.texi: Sort built-in traits alphabetically

Message ID 20240302002229.308001-1-kmatsui@gcc.gnu.org
State New
Headers show
Series [01/11] gcc/doc/extend.texi: Sort built-in traits alphabetically | expand

Commit Message

Ken Matsui March 2, 2024, 12:22 a.m. UTC
This patch sorts built-in traits alphabetically for better codebase
consistency and easier future integration of changes.

gcc/ChangeLog:

	* doc/extend.texi (Type Traits): Sort built-in traits
	alphabetically.

Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
---
 gcc/doc/extend.texi | 62 ++++++++++++++++++++++-----------------------
 1 file changed, 31 insertions(+), 31 deletions(-)

Comments

Ken Matsui March 2, 2024, 4 p.m. UTC | #1
Hi Dr. Brown,

Sorry for forgetting to CC you.  Could you please review my patch
series when you get a chance?  This patch series adds documentation
only for built-ins I implemented.  To minimize git conflicts, I will
add documentation updates to my existing patches after this patch
series gets merged.  After that, I will try to add documentation to
missing built-ins that I did not implement.

Thank you!

Sincerely,
Ken Matsui

On Fri, Mar 1, 2024 at 4:23 PM Ken Matsui <kmatsui@gcc.gnu.org> wrote:
>
> This patch sorts built-in traits alphabetically for better codebase
> consistency and easier future integration of changes.
>
> gcc/ChangeLog:
>
>         * doc/extend.texi (Type Traits): Sort built-in traits
>         alphabetically.
>
> Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
> ---
>  gcc/doc/extend.texi | 62 ++++++++++++++++++++++-----------------------
>  1 file changed, 31 insertions(+), 31 deletions(-)
>
> diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
> index f679c81acf2..b13f9d6f934 100644
> --- a/gcc/doc/extend.texi
> +++ b/gcc/doc/extend.texi
> @@ -29499,15 +29499,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
> @@ -29517,6 +29508,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
> @@ -29527,15 +29527,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)
> @@ -29545,6 +29536,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
> @@ -29560,6 +29560,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}.
> @@ -29589,12 +29596,6 @@ If @var{type} is a cv-qualified class type, and not a union type
>  ([basic.compound]) the trait is @code{true}, else it is @code{false}.
>  @enddefbuiltin
>
> -@c FIXME Commented out for GCC 13, discuss user interface for GCC 14.
> -@c @defbuiltin{bool __is_deducible (@var{template}, @var{type})}
> -@c If template arguments for @code{template} can be deduced from
> -@c @code{type} or obtained from default template arguments.
> -@c @enddefbuiltin
> -
>  @defbuiltin{bool __is_empty (@var{type})}
>  If @code{__is_class (type)} is @code{false} then the trait is @code{false}.
>  Otherwise @var{type} is considered empty if and only if: @var{type}
> @@ -29617,6 +29618,12 @@ is @code{true}, else it is @code{false}.
>  Requires: If @var{type} is a class type, it shall be a complete type.
>  @enddefbuiltin
>
> +@c FIXME Commented out for GCC 13, discuss user interface for GCC 14.
> +@c @defbuiltin{bool __is_deducible (@var{template}, @var{type})}
> +@c If template arguments for @code{template} can be deduced from
> +@c @code{type} or obtained from default template arguments.
> +@c @enddefbuiltin
> +
>  @defbuiltin{bool __is_literal_type (@var{type})}
>  If @var{type} is a literal type ([basic.types]) the trait is
>  @code{true}, else it is @code{false}.
> @@ -29661,13 +29668,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
>
Patrick Palka March 8, 2024, 4:38 p.m. UTC | #2
Hi Ken,

This patch series LGTM, thanks for these documentation improvements.

On Fri, 1 Mar 2024, Ken Matsui wrote:

> This patch sorts built-in traits alphabetically for better codebase
> consistency and easier future integration of changes.
> 
> gcc/ChangeLog:
> 
> 	* doc/extend.texi (Type Traits): Sort built-in traits
> 	alphabetically.
> 
> Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
> ---
>  gcc/doc/extend.texi | 62 ++++++++++++++++++++++-----------------------
>  1 file changed, 31 insertions(+), 31 deletions(-)
> 
> diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
> index f679c81acf2..b13f9d6f934 100644
> --- a/gcc/doc/extend.texi
> +++ b/gcc/doc/extend.texi
> @@ -29499,15 +29499,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
> @@ -29517,6 +29508,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
> @@ -29527,15 +29527,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)
> @@ -29545,6 +29536,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
> @@ -29560,6 +29560,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}.
> @@ -29589,12 +29596,6 @@ If @var{type} is a cv-qualified class type, and not a union type
>  ([basic.compound]) the trait is @code{true}, else it is @code{false}.
>  @enddefbuiltin
>  
> -@c FIXME Commented out for GCC 13, discuss user interface for GCC 14.
> -@c @defbuiltin{bool __is_deducible (@var{template}, @var{type})}
> -@c If template arguments for @code{template} can be deduced from
> -@c @code{type} or obtained from default template arguments.
> -@c @enddefbuiltin
> -
>  @defbuiltin{bool __is_empty (@var{type})}
>  If @code{__is_class (type)} is @code{false} then the trait is @code{false}.
>  Otherwise @var{type} is considered empty if and only if: @var{type}
> @@ -29617,6 +29618,12 @@ is @code{true}, else it is @code{false}.
>  Requires: If @var{type} is a class type, it shall be a complete type.
>  @enddefbuiltin
>  
> +@c FIXME Commented out for GCC 13, discuss user interface for GCC 14.
> +@c @defbuiltin{bool __is_deducible (@var{template}, @var{type})}
> +@c If template arguments for @code{template} can be deduced from
> +@c @code{type} or obtained from default template arguments.
> +@c @enddefbuiltin
> +
>  @defbuiltin{bool __is_literal_type (@var{type})}
>  If @var{type} is a literal type ([basic.types]) the trait is
>  @code{true}, else it is @code{false}.
> @@ -29661,13 +29668,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
> 
>
Ken Matsui March 8, 2024, 5:46 p.m. UTC | #3
On Fri, Mar 8, 2024 at 8:38 AM Patrick Palka <ppalka@redhat.com> wrote:
>
> Hi Ken,
>
> This patch series LGTM, thanks for these documentation improvements.

Thank you for your time to review!  I actually have some changes to
these patches, so I will re-send those to you once they are ready.

>
> On Fri, 1 Mar 2024, Ken Matsui wrote:
>
> > This patch sorts built-in traits alphabetically for better codebase
> > consistency and easier future integration of changes.
> >
> > gcc/ChangeLog:
> >
> >       * doc/extend.texi (Type Traits): Sort built-in traits
> >       alphabetically.
> >
> > Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
> > ---
> >  gcc/doc/extend.texi | 62 ++++++++++++++++++++++-----------------------
> >  1 file changed, 31 insertions(+), 31 deletions(-)
> >
> > diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
> > index f679c81acf2..b13f9d6f934 100644
> > --- a/gcc/doc/extend.texi
> > +++ b/gcc/doc/extend.texi
> > @@ -29499,15 +29499,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
> > @@ -29517,6 +29508,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
> > @@ -29527,15 +29527,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)
> > @@ -29545,6 +29536,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
> > @@ -29560,6 +29560,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}.
> > @@ -29589,12 +29596,6 @@ If @var{type} is a cv-qualified class type, and not a union type
> >  ([basic.compound]) the trait is @code{true}, else it is @code{false}.
> >  @enddefbuiltin
> >
> > -@c FIXME Commented out for GCC 13, discuss user interface for GCC 14.
> > -@c @defbuiltin{bool __is_deducible (@var{template}, @var{type})}
> > -@c If template arguments for @code{template} can be deduced from
> > -@c @code{type} or obtained from default template arguments.
> > -@c @enddefbuiltin
> > -
> >  @defbuiltin{bool __is_empty (@var{type})}
> >  If @code{__is_class (type)} is @code{false} then the trait is @code{false}.
> >  Otherwise @var{type} is considered empty if and only if: @var{type}
> > @@ -29617,6 +29618,12 @@ is @code{true}, else it is @code{false}.
> >  Requires: If @var{type} is a class type, it shall be a complete type.
> >  @enddefbuiltin
> >
> > +@c FIXME Commented out for GCC 13, discuss user interface for GCC 14.
> > +@c @defbuiltin{bool __is_deducible (@var{template}, @var{type})}
> > +@c If template arguments for @code{template} can be deduced from
> > +@c @code{type} or obtained from default template arguments.
> > +@c @enddefbuiltin
> > +
> >  @defbuiltin{bool __is_literal_type (@var{type})}
> >  If @var{type} is a literal type ([basic.types]) the trait is
> >  @code{true}, else it is @code{false}.
> > @@ -29661,13 +29668,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
> >
> >
>
diff mbox series

Patch

diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index f679c81acf2..b13f9d6f934 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -29499,15 +29499,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
@@ -29517,6 +29508,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
@@ -29527,15 +29527,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)
@@ -29545,6 +29536,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
@@ -29560,6 +29560,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}.
@@ -29589,12 +29596,6 @@  If @var{type} is a cv-qualified class type, and not a union type
 ([basic.compound]) the trait is @code{true}, else it is @code{false}.
 @enddefbuiltin
 
-@c FIXME Commented out for GCC 13, discuss user interface for GCC 14.
-@c @defbuiltin{bool __is_deducible (@var{template}, @var{type})}
-@c If template arguments for @code{template} can be deduced from
-@c @code{type} or obtained from default template arguments.
-@c @enddefbuiltin
-
 @defbuiltin{bool __is_empty (@var{type})}
 If @code{__is_class (type)} is @code{false} then the trait is @code{false}.
 Otherwise @var{type} is considered empty if and only if: @var{type}
@@ -29617,6 +29618,12 @@  is @code{true}, else it is @code{false}.
 Requires: If @var{type} is a class type, it shall be a complete type.
 @enddefbuiltin
 
+@c FIXME Commented out for GCC 13, discuss user interface for GCC 14.
+@c @defbuiltin{bool __is_deducible (@var{template}, @var{type})}
+@c If template arguments for @code{template} can be deduced from
+@c @code{type} or obtained from default template arguments.
+@c @enddefbuiltin
+
 @defbuiltin{bool __is_literal_type (@var{type})}
 If @var{type} is a literal type ([basic.types]) the trait is
 @code{true}, else it is @code{false}.
@@ -29661,13 +29668,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