1 From 63c4ffd33d8f3e61e53d30f50146e1bc4cb6e38a Mon Sep 17 00:00:00 2001
2 From: paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
3 Date: Sun, 24 Apr 2011 09:43:29 +0000
4 Subject: [PATCH 176/200] 2011-04-24 Paolo Carlini <paolo.carlini@oracle.com>
7 * doc/extend.texi (Type Traits): Document __is_standard_layout,
8 __is_literal_type, and __is_trivial; update throughout about
9 possibly cv-qualified void types.
12 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@172912 138bc75d-0d04-0410-961f-82ee72b054a4
14 index 998d703..c771436 100644
15 --- a/gcc/doc/extend.texi
16 +++ b/gcc/doc/extend.texi
17 @@ -14266,63 +14266,63 @@ If @code{type} is const qualified or is a reference type then the trait is
18 false. Otherwise if @code{__has_trivial_assign (type)} is true then the trait
19 is true, else if @code{type} is a cv class or union type with copy assignment
20 operators that are known not to throw an exception then the trait is true,
21 -else it is false. Requires: @code{type} shall be a complete type, an array
22 -type of unknown bound, or is a @code{void} type.
23 +else it is false. Requires: @code{type} shall be a complete type,
24 +(possibly cv-qualified) @code{void}, or an array of unknown bound.
26 @item __has_nothrow_copy (type)
27 If @code{__has_trivial_copy (type)} is true then the trait is true, else if
28 @code{type} is a cv class or union type with copy constructors that
29 are known not to throw an exception then the trait is true, else it is false.
30 -Requires: @code{type} shall be a complete type, an array type of
31 -unknown bound, or is a @code{void} type.
32 +Requires: @code{type} shall be a complete type, (possibly cv-qualified)
33 +@code{void}, or an array of unknown bound.
35 @item __has_nothrow_constructor (type)
36 If @code{__has_trivial_constructor (type)} is true then the trait is
37 true, else if @code{type} is a cv class or union type (or array
38 thereof) with a default constructor that is known not to throw an
39 -exception then the trait is true, else it is false. Requires:
40 -@code{type} shall be a complete type, an array type of unknown bound,
41 -or is a @code{void} type.
42 +exception then the trait is true, else it is false. Requires:
43 +@code{type} shall be a complete type, (possibly cv-qualified)
44 +@code{void}, or an array of unknown bound.
46 @item __has_trivial_assign (type)
47 If @code{type} is const qualified or is a reference type then the trait is
48 false. Otherwise if @code{__is_pod (type)} is true then the trait is
49 true, else if @code{type} is a cv class or union type with a trivial
50 copy assignment ([class.copy]) then the trait is true, else it is
51 -false. Requires: @code{type} shall be a complete type, an array type
52 -of unknown bound, or is a @code{void} type.
53 +false. Requires: @code{type} shall be a complete type, (possibly
54 +cv-qualified) @code{void}, or an array of unknown bound.
56 @item __has_trivial_copy (type)
57 If @code{__is_pod (type)} is true or @code{type} is a reference type
58 then the trait is true, else if @code{type} is a cv class or union type
59 with a trivial copy constructor ([class.copy]) then the trait
60 is true, else it is false. Requires: @code{type} shall be a complete
61 -type, an array type of unknown bound, or is a @code{void} type.
62 +type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
64 @item __has_trivial_constructor (type)
65 If @code{__is_pod (type)} is true then the trait is true, else if
66 @code{type} is a cv class or union type (or array thereof) with a
67 trivial default constructor ([class.ctor]) then the trait is true,
68 -else it is false. Requires: @code{type} shall be a complete type, an
69 -array type of unknown bound, or is a @code{void} type.
70 +else it is false. Requires: @code{type} shall be a complete
71 +type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
73 @item __has_trivial_destructor (type)
74 If @code{__is_pod (type)} is true or @code{type} is a reference type then
75 the trait is true, else if @code{type} is a cv class or union type (or
76 array thereof) with a trivial destructor ([class.dtor]) then the trait
77 is true, else it is false. Requires: @code{type} shall be a complete
78 -type, an array type of unknown bound, or is a @code{void} type.
79 +type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
81 @item __has_virtual_destructor (type)
82 If @code{type} is a class type with a virtual destructor
83 ([class.dtor]) then the trait is true, else it is false. Requires:
84 -@code{type} shall be a complete type, an array type of unknown bound,
85 -or is a @code{void} type.
86 +@code{type} shall be a complete type, (possibly cv-qualified)
87 +@code{void}, or an array of unknown bound.
89 @item __is_abstract (type)
90 If @code{type} is an abstract class ([class.abstract]) then the trait
91 is true, else it is false. Requires: @code{type} shall be a complete
92 -type, an array type of unknown bound, or is a @code{void} type.
93 +type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
95 @item __is_base_of (base_type, derived_type)
96 If @code{base_type} is a base class of @code{derived_type}
97 @@ -14347,22 +14347,37 @@ any, are bit-fields of length 0, and @code{type} has no virtual
98 members, and @code{type} has no virtual base classes, and @code{type}
99 has no base classes @code{base_type} for which
100 @code{__is_empty (base_type)} is false. Requires: @code{type} shall
101 -be a complete type, an array type of unknown bound, or is a
103 +be a complete type, (possibly cv-qualified) @code{void}, or an array
106 @item __is_enum (type)
107 If @code{type} is a cv enumeration type ([basic.compound]) the trait is
108 true, else it is false.
110 +@item __is_literal_type (type)
111 +If @code{type} is a literal type ([basic.types]) the trait is
112 +true, else it is false. Requires: @code{type} shall be a complete type,
113 +(possibly cv-qualified) @code{void}, or an array of unknown bound.
115 @item __is_pod (type)
116 If @code{type} is a cv POD type ([basic.types]) then the trait is true,
117 -else it is false. Requires: @code{type} shall be a complete type,
118 -an array type of unknown bound, or is a @code{void} type.
119 +else it is false. Requires: @code{type} shall be a complete type,
120 +(possibly cv-qualified) @code{void}, or an array of unknown bound.
122 @item __is_polymorphic (type)
123 If @code{type} is a polymorphic class ([class.virtual]) then the trait
124 is true, else it is false. Requires: @code{type} shall be a complete
125 -type, an array type of unknown bound, or is a @code{void} type.
126 +type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
128 +@item __is_standard_layout (type)
129 +If @code{type} is a standard-layout type ([basic.types]) the trait is
130 +true, else it is false. Requires: @code{type} shall be a complete
131 +type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
133 +@item __is_trivial (type)
134 +If @code{type} is a trivial type ([basic.types]) the trait is
135 +true, else it is false. Requires: @code{type} shall be a complete
136 +type, (possibly cv-qualified) @code{void}, or an array of unknown bound.
138 @item __is_union (type)
139 If @code{type} is a cv union type ([basic.compound]) the trait is