]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/type_traits/doc/is_pod.qbk
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / type_traits / doc / is_pod.qbk
CommitLineData
7c673cae
FG
1[/
2 Copyright 2007 John Maddock.
3 Distributed under the Boost Software License, Version 1.0.
4 (See accompanying file LICENSE_1_0.txt or copy at
5 http://www.boost.org/LICENSE_1_0.txt).
6]
7
8[section:is_pod is_pod]
9 template <class T>
10 struct is_pod : public __tof {};
11
12__inherit If T is a (possibly cv-qualified) POD type then inherits from __true_type,
13otherwise inherits from __false_type.
14
15POD stands for "Plain old data".
16Arithmetic types, and enumeration types,
17a pointers and pointer to members are all PODs. Classes and unions can also
18be POD's if they have no non-static data members that are of reference or
19non-POD type, no user defined constructors, no user defined assignment
20operators, no private or protected non-static data members,
21no virtual functions and no base classes. Finally, a cv-qualified POD is
22still a POD, as is an array of PODs.
23
24__std_ref 3.9p10 and 9p4 (Note that POD's are also aggregates, see 8.5.1).
25
26__compat Without some (as yet unspecified) help from the compiler, is_pod will
27never report that a class or struct is a POD; this is always safe,
28if possibly sub-optimal.
29Currently (June 2015) compilers more recent than Visual C++ 8, Clang-3, GCC-4.3, Greenhills 6.0,
30Intel-11.0, and Codegear have the necessary compiler __intrinsics to ensure that this
31trait "just works". You may also test to see if the necessary __intrinsics are available
32by checking to see if the macro `BOOST_IS_POD` is defined.
33
34
35__header ` #include <boost/type_traits/is_pod.hpp>` or ` #include <boost/type_traits.hpp>`
36
37__examples
38
39[:`is_pod<int>` inherits from `__true_type`.]
40
41[:`is_pod<char*>::type` is the type `__true_type`.]
42
43[:`is_pod<int (*)(long)>::value` is an integral constant
44expression that evaluates to /true/.]
45
46[:`is_pod<MyClass>::value` is an integral constant
47expression that evaluates to /false/.]
48
49[:`is_pod<T>::value_type` is the type `bool`.]
50
51[endsect]
52