]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | [/ |
2 | (C) Copyright Edward Diener 2011,2013 | |
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_history History] | |
9 | ||
10 | [heading Post Boost 1.55 development] | |
11 | * Passing a valid non-class as the enclosing type of the query macro metafunctions | |
12 | always returns false, rather than producing a compiler error. | |
13 | * Passing a valid non-class as the enclosing type of the BOOST_TTI_MEM_TYPE | |
14 | macro metafunction always returns the marker type, rather than producing | |
15 | a compiler error. | |
16 | ||
17 | [heading Boost 1.54] | |
18 | * TTI is in Boost and the macros have been simplified | |
19 | * Breaking changes | |
20 | * The nullary type metafunctions are no longer part of the library. | |
21 | * Single common macro metafuncions are now used for introspecting | |
22 | member data, member functions, static member data, static member functions, | |
23 | data, functions, types, and templates. | |
24 | * Composite forms of macro metafunctions are now folded into the main macros. | |
25 | * BOOST_TTI_HAS_TYPE metafunction takes an optional second template parameter | |
26 | which may be an MPL lambda expression. | |
27 | * The BOOST_TTI_MEMBER_TYPE metafunction takes an optional marker type. | |
28 | ||
29 | [heading Version 1.5] | |
30 | ||
31 | * The TTI has been accepted into Boost. This is the first iteration of changes as the | |
32 | library is being prepared for Boost based on the library review and end-user comments | |
33 | and suggestions. For each iteration of changes made based on end-user comments and | |
34 | suggestions, I will produce a new version number so that end-users who want to follow | |
35 | the progress of the library for Boost can know what is being changed. I will be targeting | |
36 | Boost 1.49 for completing all changes and passing all tests in order to have TTI ready to | |
37 | be copied from Boost trunk to Boost release for inclusion into Boost. | |
38 | * Breaking changes | |
39 | * Macro metafunctions are no longer generated in any namespace, but directly | |
40 | in the scope of the end-user. | |
41 | * The metafunction class generating macros, for each metafunction macro, have been removed. | |
42 | The end-user can use boost::mpl::quote instead if he wishes. | |
43 | * The metafunction name generating macros have been simplified so that no namespace name is generated, | |
44 | and for each macro of the macro metafunctions there is a single metafunction name generating macro. | |
45 | * The BOOST_TTI_TRAITS_GEN macro has been removed. | |
46 | * Individual header file names have changed to more closely reflect the metafunction macro names. | |
47 | * The names of the composite member function and composite static member function macros | |
48 | have changed from BOOST_TTI_HAS_COMP_MEMBER_FUNCTION to BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG | |
49 | and from BOOST_TTI_HAS_COMP_STATIC_MEMBER_FUNCTION to BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG. | |
50 | * All template parameter names are now unique to TTI to avoid name clashes. | |
51 | * Nullary type metafunctions can be passed non-class types as is. | |
52 | ||
53 | [heading Version 1.4] | |
54 | ||
55 | * Breaking changes | |
56 | * `BOOST_TTI_HAS_MEMBER` (`BOOST_TTI_TRAIT_HAS_MEMBER`) has been changed to `BOOST_TTI_HAS_COMP_MEMBER_FUNCTION` (`BOOST_TTI_TRAIT_HAS_COMP_MEMBER_FUNCTION`) | |
57 | and | |
58 | `BOOST_TTI_MTFC_HAS_MEMBER` (`BOOST_TTI_MTFC_TRAIT_HAS_MEMBER`) has been changed to `BOOST_TTI_MTFC_HAS_COMP_MEMBER_FUNCTION` (`BOOST_TTI_MTFC_TRAIT_HAS_COMP_MEMBER_FUNCTION`). | |
59 | This family of functionality now supports only member functions with composite syntax. | |
60 | * `BOOST_TTI_HAS_STATIC_MEMBER` (`BOOST_TTI_TRAIT_HAS_STATIC_MEMBER`) has been changed to `BOOST_TTI_HAS_COMP_STATIC_MEMBER_FUNCTION` (`BOOST_TTI_TRAIT_HAS_COMP_STATIC_MEMBER_FUNCTION`) | |
61 | and | |
62 | `BOOST_TTI_MTFC_HAS_STATIC_MEMBER` (`BOOST_TTI_MTFC_TRAIT_HAS_STATIC_MEMBER`) has been changed to `BOOST_TTI_MTFC_HAS_COMP_STATIC_MEMBER_FUNCTION` (`BOOST_TTI_MTFC_TRAIT_HAS_COMP_STATIC_MEMBER_FUNCTION`). | |
63 | This family of functionality now supports only static member functions with composite syntax. | |
64 | * `boost::tti::mf_has_static_data` has been changed to `boost::tti::mf_has_static_member_data`. | |
65 | * Added `BOOST_TTI_HAS_STATIC_MEMBER_DATA` and family for introspecting static member data. | |
66 | * Inclusion of specific header files for faster compilation is now supported. | |
67 | * Inclusion of macro metafunction name generating macros. | |
68 | * Shorten the names of the test files and test header files. | |
69 | * Added documentation topic about introspecting function templates. | |
70 | ||
71 | [heading Version 1.3] | |
72 | ||
73 | * Breaking changes | |
74 | * The names of the main header files are shortened to 'boost/tti/tti.hpp' and 'boost/tti/tti_vm.hpp'. | |
75 | * The library follows the Boost conventions. | |
76 | * Changed the filenames to lower case and underscores. | |
77 | * The top-level tti namespace has become the boost::tti namespace. | |
78 | * The macros now start with `BOOST_TTI_` rather than just `TTI_` as previously. | |
79 | * The variadic macro support works only with the latest version of the variadic_macro_library, | |
80 | which is version 1.3+. | |
81 | ||
82 | [heading Version 1.2] | |
83 | ||
84 | * Added the set of metafunction class macros for passing the macro metafunctions as metadata. | |
85 | This complements passing the macro metafunctions as metadata using placeholder expressions. | |
86 | ||
87 | [heading Version 1.1] | |
88 | ||
89 | * Library now also compiles with gcc 3.4.2 and gcc 3.4.5. | |
90 | * Examples of use have been added to the documentation. | |
91 | * In the documentation the previously mentioned 'nested type metafunctions' are now called "nullary type metafunctions'. | |
92 | * `BOOST_TTI_HAS_TYPE` and `boost::tti::mf_has_type` now have optional typedef checking. | |
93 | * New macro metafunction functionality which allows composite typed to be treated as individual types has been implemented. These include: | |
94 | * `BOOST_TTI_HAS_MEMBER_DATA` | |
95 | * `BOOST_TTI_HAS_MEMBER_FUNCTION` | |
96 | * `BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION` | |
97 | * New nullary type metafunction `boost::tti::mf_has_static_member_function` uses the new underlying `BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION` macro metafunction. | |
98 | Its signature uses an optional MPL forward sequence for the parameter types and an optional Boost `function_types` tag type. | |
99 | * New nullary type metafunctions `boost::tti::valid_member_type` and `boost::tti::mf_valid_member_type` for checking if the 'type' returned from invoking the `BOOST_TTI_MEMBER_TYPE` or `boost::tti::mf_member_type` metafunctions is valid. | |
100 | * Breaking changes | |
101 | * `BOOST_TTI_HAS_TYPE_CHECK_TYPEDEF` and `boost::tti::mf_has_type_check_typedef` have been removed, and the functionality in them folded into `BOOST_TTI_HAS_TYPE` and `boost::tti::mf_has_type`. | |
102 | * BOOST_TTI_MEMBER_TYPE and boost::tti::mf_member_type no longer also return a 'valid' boolean constant. Use boost::tti::valid_member_type or boost::tti::mf_valid_member_type metafunctions instead ( see above ). | |
103 | * `boost::tti::mf_has_static_function` has been removed and its functionality moved to `boost::tti::mf_has_static_member_function` ( see above ). | |
104 | * `boost::tti::mf_member_data` uses the new underlying `BOOST_TTI_HAS_MEMBER_DATA` macro metafunction. | |
105 | * The signature for `boost::tti::mf_has_member_function` has changed to use an optional MPL forward sequence for the parameter types and an optional Boost `function_types` tag type. | |
106 | * All nullary type metafunctions take their corresponding macro metafunction parameter as a class in the form of a Boost MPL lambda expression instead of as a template template parameter as previously. | |
107 | Using a placeholder expression is the easiest way to pass the corresponding macro metafunction to its nullary type metafunction. | |
108 | ||
109 | [heading Version 1.0] | |
110 | ||
111 | Initial version of the library. | |
112 | ||
113 | [endsect] |