tti_history.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
  4. <title>History</title>
  5. <link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
  6. <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
  7. <link rel="home" href="../index.html" title="Chapter&#160;1.&#160;The Type Traits Introspection Library">
  8. <link rel="up" href="../index.html" title="Chapter&#160;1.&#160;The Type Traits Introspection Library">
  9. <link rel="prev" href="tti_tests.html" title="Testing TTI">
  10. <link rel="next" href="tti_todo.html" title="ToDo">
  11. </head>
  12. <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
  13. <table cellpadding="2" width="100%"><tr>
  14. <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
  15. <td align="center"><a href="../../../../../index.html">Home</a></td>
  16. <td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
  17. <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
  18. <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
  19. <td align="center"><a href="../../../../../more/index.htm">More</a></td>
  20. </tr></table>
  21. <hr>
  22. <div class="spirit-nav">
  23. <a accesskey="p" href="tti_tests.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tti_todo.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
  24. </div>
  25. <div class="section">
  26. <div class="titlepage"><div><div><h2 class="title" style="clear: both">
  27. <a name="the_type_traits_introspection_library.tti_history"></a><a class="link" href="tti_history.html" title="History">History</a>
  28. </h2></div></div></div>
  29. <h4>
  30. <a name="the_type_traits_introspection_library.tti_history.h0"></a>
  31. <span class="phrase"><a name="the_type_traits_introspection_library.tti_history.post_boost_1_55_development"></a></span><a class="link" href="tti_history.html#the_type_traits_introspection_library.tti_history.post_boost_1_55_development">Post
  32. Boost 1.55 development</a>
  33. </h4>
  34. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  35. <li class="listitem">
  36. Passing a valid non-class as the enclosing type of the query macro metafunctions
  37. always returns false, rather than producing a compiler error.
  38. </li>
  39. <li class="listitem">
  40. Passing a valid non-class as the enclosing type of the BOOST_TTI_MEM_TYPE
  41. macro metafunction always returns the marker type, rather than producing
  42. a compiler error.
  43. </li>
  44. </ul></div>
  45. <h4>
  46. <a name="the_type_traits_introspection_library.tti_history.h1"></a>
  47. <span class="phrase"><a name="the_type_traits_introspection_library.tti_history.boost_1_54"></a></span><a class="link" href="tti_history.html#the_type_traits_introspection_library.tti_history.boost_1_54">Boost
  48. 1.54</a>
  49. </h4>
  50. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  51. <li class="listitem">
  52. TTI is in Boost and the macros have been simplified
  53. </li>
  54. <li class="listitem">
  55. Breaking changes
  56. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  57. <li class="listitem">
  58. The nullary type metafunctions are no longer part of the library.
  59. </li>
  60. <li class="listitem">
  61. Single common macro metafunctions are now used for introspecting
  62. member data, member functions, static member data, static member
  63. functions, data, functions, types, and templates.
  64. </li>
  65. <li class="listitem">
  66. Composite forms of macro metafunctions are now folded into the main
  67. macros.
  68. </li>
  69. <li class="listitem">
  70. BOOST_TTI_HAS_TYPE metafunction takes an optional second template
  71. parameter which may be an MPL lambda expression.
  72. </li>
  73. <li class="listitem">
  74. The BOOST_TTI_MEMBER_TYPE metafunction takes an optional marker type.
  75. </li>
  76. </ul></div>
  77. </li>
  78. </ul></div>
  79. <h4>
  80. <a name="the_type_traits_introspection_library.tti_history.h2"></a>
  81. <span class="phrase"><a name="the_type_traits_introspection_library.tti_history.version_1_5"></a></span><a class="link" href="tti_history.html#the_type_traits_introspection_library.tti_history.version_1_5">Version
  82. 1.5</a>
  83. </h4>
  84. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  85. <li class="listitem">
  86. The TTI has been accepted into Boost. This is the first iteration of changes
  87. as the library is being prepared for Boost based on the library review
  88. and end-user comments and suggestions. For each iteration of changes made
  89. based on end-user comments and suggestions, I will produce a new version
  90. number so that end-users who want to follow the progress of the library
  91. for Boost can know what is being changed. I will be targeting Boost 1.49
  92. for completing all changes and passing all tests in order to have TTI ready
  93. to be copied from Boost trunk to Boost release for inclusion into Boost.
  94. </li>
  95. <li class="listitem">
  96. Breaking changes
  97. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  98. <li class="listitem">
  99. Macro metafunctions are no longer generated in any namespace, but
  100. directly in the scope of the end-user.
  101. </li>
  102. <li class="listitem">
  103. The metafunction class generating macros, for each metafunction macro,
  104. have been removed. The end-user can use boost::mpl::quote instead
  105. if he wishes.
  106. </li>
  107. <li class="listitem">
  108. The metafunction name generating macros have been simplified so that
  109. no namespace name is generated, and for each macro of the macro metafunctions
  110. there is a single metafunction name generating macro.
  111. </li>
  112. <li class="listitem">
  113. The BOOST_TTI_TRAITS_GEN macro has been removed.
  114. </li>
  115. <li class="listitem">
  116. Individual header file names have changed to more closely reflect
  117. the metafunction macro names.
  118. </li>
  119. <li class="listitem">
  120. The names of the composite member function and composite static member
  121. function macros have changed from BOOST_TTI_HAS_COMP_MEMBER_FUNCTION
  122. to BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG and from BOOST_TTI_HAS_COMP_STATIC_MEMBER_FUNCTION
  123. to BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.
  124. </li>
  125. </ul></div>
  126. </li>
  127. <li class="listitem">
  128. All template parameter names are now unique to TTI to avoid name clashes.
  129. </li>
  130. <li class="listitem">
  131. Nullary type metafunctions can be passed non-class types as is.
  132. </li>
  133. </ul></div>
  134. <h4>
  135. <a name="the_type_traits_introspection_library.tti_history.h3"></a>
  136. <span class="phrase"><a name="the_type_traits_introspection_library.tti_history.version_1_4"></a></span><a class="link" href="tti_history.html#the_type_traits_introspection_library.tti_history.version_1_4">Version
  137. 1.4</a>
  138. </h4>
  139. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  140. <li class="listitem">
  141. Breaking changes
  142. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  143. <li class="listitem">
  144. <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_MEMBER</span></code>
  145. (<code class="computeroutput"><span class="identifier">BOOST_TTI_TRAIT_HAS_MEMBER</span></code>)
  146. has been changed to <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_COMP_MEMBER_FUNCTION</span></code>
  147. (<code class="computeroutput"><span class="identifier">BOOST_TTI_TRAIT_HAS_COMP_MEMBER_FUNCTION</span></code>)
  148. and <code class="computeroutput"><span class="identifier">BOOST_TTI_MTFC_HAS_MEMBER</span></code>
  149. (<code class="computeroutput"><span class="identifier">BOOST_TTI_MTFC_TRAIT_HAS_MEMBER</span></code>)
  150. has been changed to <code class="computeroutput"><span class="identifier">BOOST_TTI_MTFC_HAS_COMP_MEMBER_FUNCTION</span></code>
  151. (<code class="computeroutput"><span class="identifier">BOOST_TTI_MTFC_TRAIT_HAS_COMP_MEMBER_FUNCTION</span></code>).
  152. This family of functionality now supports only member functions with
  153. composite syntax.
  154. </li>
  155. <li class="listitem">
  156. <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_STATIC_MEMBER</span></code>
  157. (<code class="computeroutput"><span class="identifier">BOOST_TTI_TRAIT_HAS_STATIC_MEMBER</span></code>)
  158. has been changed to <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_COMP_STATIC_MEMBER_FUNCTION</span></code>
  159. (<code class="computeroutput"><span class="identifier">BOOST_TTI_TRAIT_HAS_COMP_STATIC_MEMBER_FUNCTION</span></code>)
  160. and <code class="computeroutput"><span class="identifier">BOOST_TTI_MTFC_HAS_STATIC_MEMBER</span></code>
  161. (<code class="computeroutput"><span class="identifier">BOOST_TTI_MTFC_TRAIT_HAS_STATIC_MEMBER</span></code>)
  162. has been changed to <code class="computeroutput"><span class="identifier">BOOST_TTI_MTFC_HAS_COMP_STATIC_MEMBER_FUNCTION</span></code>
  163. (<code class="computeroutput"><span class="identifier">BOOST_TTI_MTFC_TRAIT_HAS_COMP_STATIC_MEMBER_FUNCTION</span></code>).
  164. This family of functionality now supports only static member functions
  165. with composite syntax.
  166. </li>
  167. <li class="listitem">
  168. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_has_static_data</span></code> has been changed
  169. to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_has_static_member_data</span></code>.
  170. </li>
  171. </ul></div>
  172. </li>
  173. <li class="listitem">
  174. Added <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_STATIC_MEMBER_DATA</span></code>
  175. and family for introspecting static member data.
  176. </li>
  177. <li class="listitem">
  178. Inclusion of specific header files for faster compilation is now supported.
  179. </li>
  180. <li class="listitem">
  181. Inclusion of macro metafunction name generating macros.
  182. </li>
  183. <li class="listitem">
  184. Shorten the names of the test files and test header files.
  185. </li>
  186. <li class="listitem">
  187. Added documentation topic about introspecting function templates.
  188. </li>
  189. </ul></div>
  190. <h4>
  191. <a name="the_type_traits_introspection_library.tti_history.h4"></a>
  192. <span class="phrase"><a name="the_type_traits_introspection_library.tti_history.version_1_3"></a></span><a class="link" href="tti_history.html#the_type_traits_introspection_library.tti_history.version_1_3">Version
  193. 1.3</a>
  194. </h4>
  195. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
  196. Breaking changes
  197. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  198. <li class="listitem">
  199. The names of the main header files are shortened to 'boost/tti/tti.hpp'
  200. and 'boost/tti/tti_vm.hpp'.
  201. </li>
  202. <li class="listitem">
  203. The library follows the Boost conventions.
  204. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: square; ">
  205. <li class="listitem">
  206. Changed the filenames to lower case and underscores.
  207. </li>
  208. <li class="listitem">
  209. The top-level tti namespace has become the boost::tti namespace.
  210. </li>
  211. <li class="listitem">
  212. The macros now start with <code class="computeroutput"><span class="identifier">BOOST_TTI_</span></code>
  213. rather than just <code class="computeroutput"><span class="identifier">TTI_</span></code>
  214. as previously.
  215. </li>
  216. </ul></div>
  217. </li>
  218. <li class="listitem">
  219. The variadic macro support works only with the latest version of
  220. the variadic_macro_library, which is version 1.3+.
  221. </li>
  222. </ul></div>
  223. </li></ul></div>
  224. <h4>
  225. <a name="the_type_traits_introspection_library.tti_history.h5"></a>
  226. <span class="phrase"><a name="the_type_traits_introspection_library.tti_history.version_1_2"></a></span><a class="link" href="tti_history.html#the_type_traits_introspection_library.tti_history.version_1_2">Version
  227. 1.2</a>
  228. </h4>
  229. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
  230. Added the set of metafunction class macros for passing the macro metafunctions
  231. as metadata. This complements passing the macro metafunctions as metadata
  232. using placeholder expressions.
  233. </li></ul></div>
  234. <h4>
  235. <a name="the_type_traits_introspection_library.tti_history.h6"></a>
  236. <span class="phrase"><a name="the_type_traits_introspection_library.tti_history.version_1_1"></a></span><a class="link" href="tti_history.html#the_type_traits_introspection_library.tti_history.version_1_1">Version
  237. 1.1</a>
  238. </h4>
  239. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
  240. <li class="listitem">
  241. Library now also compiles with gcc 3.4.2 and gcc 3.4.5.
  242. </li>
  243. <li class="listitem">
  244. Examples of use have been added to the documentation.
  245. </li>
  246. <li class="listitem">
  247. In the documentation the previously mentioned 'nested type metafunctions'
  248. are now called "nullary type metafunctions'.
  249. </li>
  250. <li class="listitem">
  251. <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_TYPE</span></code> and
  252. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_has_type</span></code> now have optional typedef
  253. checking.
  254. </li>
  255. <li class="listitem">
  256. New macro metafunction functionality which allows composite typed to be
  257. treated as individual types has been implemented. These include:
  258. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  259. <li class="listitem">
  260. <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_MEMBER_DATA</span></code>
  261. </li>
  262. <li class="listitem">
  263. <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_MEMBER_FUNCTION</span></code>
  264. </li>
  265. <li class="listitem">
  266. <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION</span></code>
  267. </li>
  268. </ul></div>
  269. </li>
  270. <li class="listitem">
  271. New nullary type metafunction <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_has_static_member_function</span></code>
  272. uses the new underlying <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION</span></code>
  273. macro metafunction. Its signature uses an optional MPL forward sequence
  274. for the parameter types and an optional Boost <code class="computeroutput"><span class="identifier">function_types</span></code>
  275. tag type.
  276. </li>
  277. <li class="listitem">
  278. New nullary type metafunctions <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">valid_member_type</span></code>
  279. and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_valid_member_type</span></code> for checking if
  280. the 'type' returned from invoking the <code class="computeroutput"><span class="identifier">BOOST_TTI_MEMBER_TYPE</span></code>
  281. or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_member_type</span></code> metafunctions is valid.
  282. </li>
  283. <li class="listitem">
  284. Breaking changes
  285. <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; ">
  286. <li class="listitem">
  287. <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_TYPE_CHECK_TYPEDEF</span></code>
  288. and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_has_type_check_typedef</span></code> have
  289. been removed, and the functionality in them folded into <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_TYPE</span></code> and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_has_type</span></code>.
  290. </li>
  291. <li class="listitem">
  292. BOOST_TTI_MEMBER_TYPE and boost::tti::mf_member_type no longer also
  293. return a 'valid' boolean constant. Use boost::tti::valid_member_type
  294. or boost::tti::mf_valid_member_type metafunctions instead ( see above
  295. ).
  296. </li>
  297. <li class="listitem">
  298. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_has_static_function</span></code> has been
  299. removed and its functionality moved to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_has_static_member_function</span></code>
  300. ( see above ).
  301. </li>
  302. <li class="listitem">
  303. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_member_data</span></code> uses the new underlying
  304. <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_MEMBER_DATA</span></code>
  305. macro metafunction.
  306. </li>
  307. <li class="listitem">
  308. The signature for <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tti</span><span class="special">::</span><span class="identifier">mf_has_member_function</span></code>
  309. has changed to use an optional MPL forward sequence for the parameter
  310. types and an optional Boost <code class="computeroutput"><span class="identifier">function_types</span></code>
  311. tag type.
  312. </li>
  313. <li class="listitem">
  314. All nullary type metafunctions take their corresponding macro metafunction
  315. parameter as a class in the form of a Boost MPL lambda expression
  316. instead of as a template template parameter as previously. Using
  317. a placeholder expression is the easiest way to pass the corresponding
  318. macro metafunction to its nullary type metafunction.
  319. </li>
  320. </ul></div>
  321. </li>
  322. </ul></div>
  323. <h4>
  324. <a name="the_type_traits_introspection_library.tti_history.h7"></a>
  325. <span class="phrase"><a name="the_type_traits_introspection_library.tti_history.version_1_0"></a></span><a class="link" href="tti_history.html#the_type_traits_introspection_library.tti_history.version_1_0">Version
  326. 1.0</a>
  327. </h4>
  328. <p>
  329. Initial version of the library.
  330. </p>
  331. </div>
  332. <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
  333. <td align="left"></td>
  334. <td align="right"><div class="copyright-footer">Copyright &#169; 2011-2013 Tropic Software
  335. East Inc<p>
  336. Distributed under the Boost Software License, Version 1.0. (See accompanying
  337. file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
  338. </p>
  339. </div></td>
  340. </tr></table>
  341. <hr>
  342. <div class="spirit-nav">
  343. <a accesskey="p" href="tti_tests.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tti_todo.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
  344. </div>
  345. </body>
  346. </html>