]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/tti/doc/tti_why.qbk
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / tti / doc / tti_why.qbk
CommitLineData
7c673cae
FG
1[/
2 (C) Copyright Edward Diener 2011
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:tti_reason Why the TTI Library ?]
9
10In the Boost Type Traits library there is compile time functionality for
11querying information about a C++ type. This information is very useful
12during template metaprogramming and forms the basis, along with the
13constructs of the Boost MPL library, and some other compile time
14libraries, for much of the template metaprogramming in Boost.
15
16One area which is mostly missing in the Type Traits library is the ability
17to determine what C++ inner elements are part of a type, where the inner
18element may be a nested type, function or data member, static function or
19static data member, or class template.
20
21There has been some of this functionality in Boost, both in already existing
22libraries and in libraries on which others have worked but which were
23never submitted for acceptance into Boost. An example with an existing Boost
24library is Boost MPL, where there is functionality, in the form of macros and metafunctions,
25to determine whether an enclosing type has a particular nested type or nested
26class template. An example with a library which was never submitted to Boost
27is the Concept Traits Library from which much of the functionality of this
28library, related to type traits, was taken and expanded.
29
30It may also be possible that some other Boost libraries, highly dependent
31on advanced template metaprogramming techniques, also have internal
32functionality to introspect a type's elements at compile time. But to the best
33of my knowledge this sort of functionality has never been incorporated in
34a single Boost library. This library is an attempt to do so, and to bring
35a recognizable set of interfaces to compile-time type introspection to Boost
36so that other metaprogramming libraries can use them for their own needs.
37
38[endsect]