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