tti_history.qbk 7.3 KB

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