123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- [/
- (C) Copyright Edward Diener 2011,2013
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt).
- ]
- [section:tti_history History]
- [heading Post Boost 1.55 development]
- * Passing a valid non-class as the enclosing type of the query macro metafunctions
- always returns false, rather than producing a compiler error.
- * Passing a valid non-class as the enclosing type of the BOOST_TTI_MEM_TYPE
- macro metafunction always returns the marker type, rather than producing
- a compiler error.
- [heading Boost 1.54]
- * TTI is in Boost and the macros have been simplified
- * Breaking changes
- * The nullary type metafunctions are no longer part of the library.
- * Single common macro metafunctions are now used for introspecting
- member data, member functions, static member data, static member functions,
- data, functions, types, and templates.
- * Composite forms of macro metafunctions are now folded into the main macros.
- * BOOST_TTI_HAS_TYPE metafunction takes an optional second template parameter
- which may be an MPL lambda expression.
- * The BOOST_TTI_MEMBER_TYPE metafunction takes an optional marker type.
- [heading Version 1.5]
- * The TTI has been accepted into Boost. This is the first iteration of changes as the
- library is being prepared for Boost based on the library review and end-user comments
- and suggestions. For each iteration of changes made based on end-user comments and
- suggestions, I will produce a new version number so that end-users who want to follow
- the progress of the library for Boost can know what is being changed. I will be targeting
- Boost 1.49 for completing all changes and passing all tests in order to have TTI ready to
- be copied from Boost trunk to Boost release for inclusion into Boost.
- * Breaking changes
- * Macro metafunctions are no longer generated in any namespace, but directly
- in the scope of the end-user.
- * The metafunction class generating macros, for each metafunction macro, have been removed.
- The end-user can use boost::mpl::quote instead if he wishes.
- * The metafunction name generating macros have been simplified so that no namespace name is generated,
- and for each macro of the macro metafunctions there is a single metafunction name generating macro.
- * The BOOST_TTI_TRAITS_GEN macro has been removed.
- * Individual header file names have changed to more closely reflect the metafunction macro names.
- * The names of the composite member function and composite static member function macros
- have changed from BOOST_TTI_HAS_COMP_MEMBER_FUNCTION to BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG
- and from BOOST_TTI_HAS_COMP_STATIC_MEMBER_FUNCTION to BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.
- * All template parameter names are now unique to TTI to avoid name clashes.
- * Nullary type metafunctions can be passed non-class types as is.
- [heading Version 1.4]
- * Breaking changes
- * `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`)
- and
- `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`).
- This family of functionality now supports only member functions with composite syntax.
- * `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`)
- and
- `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`).
- This family of functionality now supports only static member functions with composite syntax.
- * `boost::tti::mf_has_static_data` has been changed to `boost::tti::mf_has_static_member_data`.
- * Added `BOOST_TTI_HAS_STATIC_MEMBER_DATA` and family for introspecting static member data.
- * Inclusion of specific header files for faster compilation is now supported.
- * Inclusion of macro metafunction name generating macros.
- * Shorten the names of the test files and test header files.
- * Added documentation topic about introspecting function templates.
- [heading Version 1.3]
- * Breaking changes
- * The names of the main header files are shortened to 'boost/tti/tti.hpp' and 'boost/tti/tti_vm.hpp'.
- * The library follows the Boost conventions.
- * Changed the filenames to lower case and underscores.
- * The top-level tti namespace has become the boost::tti namespace.
- * The macros now start with `BOOST_TTI_` rather than just `TTI_` as previously.
- * The variadic macro support works only with the latest version of the variadic_macro_library,
- which is version 1.3+.
- [heading Version 1.2]
- * Added the set of metafunction class macros for passing the macro metafunctions as metadata.
- This complements passing the macro metafunctions as metadata using placeholder expressions.
- [heading Version 1.1]
- * Library now also compiles with gcc 3.4.2 and gcc 3.4.5.
- * Examples of use have been added to the documentation.
- * In the documentation the previously mentioned 'nested type metafunctions' are now called "nullary type metafunctions'.
- * `BOOST_TTI_HAS_TYPE` and `boost::tti::mf_has_type` now have optional typedef checking.
- * New macro metafunction functionality which allows composite typed to be treated as individual types has been implemented. These include:
- * `BOOST_TTI_HAS_MEMBER_DATA`
- * `BOOST_TTI_HAS_MEMBER_FUNCTION`
- * `BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION`
- * New nullary type metafunction `boost::tti::mf_has_static_member_function` uses the new underlying `BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION` macro metafunction.
- Its signature uses an optional MPL forward sequence for the parameter types and an optional Boost `function_types` tag type.
- * 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.
- * Breaking changes
- * `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`.
- * 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 ).
- * `boost::tti::mf_has_static_function` has been removed and its functionality moved to `boost::tti::mf_has_static_member_function` ( see above ).
- * `boost::tti::mf_member_data` uses the new underlying `BOOST_TTI_HAS_MEMBER_DATA` macro metafunction.
- * 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.
- * 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.
- Using a placeholder expression is the easiest way to pass the corresponding macro metafunction to its nullary type metafunction.
- [heading Version 1.0]
- Initial version of the library.
- [endsect]
|