TTI library updated in the sandbox to version 1.4

I have updated the TTI library in the sandbox 'tti' directory to version 1.4. The TTI library, which is an abbreviation for the 'Type Traits Introspection' library, allows a programmer to introspect at compile time the inner elements of a C++ type. The introspection process depends on specifying the name of the inner element by different macros for different types of elements, and then using a generated metafunction to determine whether that element exists within the enclosing type. The inner elements which can be introspected are type, class template, member data, member function, static member data, and static member function. Changes in this release include: * Some metafunction macro names and one nullary type metafunction name have changed to provide a better separation of introspection of functions using composite and individual type syntax. * Composite syntax macros are now only used to introspect member functions and static member functions. Individual type syntax now exists for introspecting member data and static member data. * Inclusion of specific header files for faster compilation is now supported. * Addition of macro metafunction name generating macros. * Shorten the names of the test files and test header files. * Added documentation topic about introspecting function templates. The TTI library is based on the type_traits_ext portion of the Concept Traits Library, with improvements and additions, and also reproduces functionality ( without changing existing code ), for the purposes of completeness, from Boost.MPL regarding introspection of types and templates. The purpose of the library is to provide a consistent set of interfaces for doing compile-time introspection of a type, which other template metaprogrammers can use in their code. If you are at all interested in compile-time introspection of types, please take a look at the functionality of this library. There is a readme.txt in the top-level directory, for anyone browsing the sandbox. There is a build.txt file in the doc subdirectory for building the documentation and running the tests. The documentation is also included as part of the sandbox files for those who can not build the docs. The library has been tested and works with gcc 3.4.2, 3.4.5, 4.3.0, 4.4.0, 4.5.0-1, 4.5.2-1 and VC++ 8.0, 9.0, 10.0. It may also work with other compilers. This is the last release in which breaking name changes will occur. I anticipate any further release will include only possible additions of functionality, but all current interfaces are now stable and the design is set. Questions, comments, suggestions, and bug reports are all welcome.

Message du 23/03/11 17:09 De : "Edward Diener" A : boost@lists.boost.org Copie à : Objet : [boost] TTI library updated in the sandbox to version 1.4
I have updated the TTI library in the sandbox 'tti' directory to version 1.4.
Hi, what about requesting the addition of the library to the schedule and start looking for a review manager? Good luck, Vicente

On 3/23/2011 12:31 PM, Vicente BOTET wrote:
Message du 23/03/11 17:09 De : "Edward Diener" A : boost@lists.boost.org Copie à : Objet : [boost] TTI library updated in the sandbox to version 1.4
I have updated the TTI library in the sandbox 'tti' directory to version 1.4.
Hi,
what about requesting the addition of the library to the schedule and start looking for a review manager?
I will be doing that. Unfortunately except for you and John Maddock no one else has ever expressed an interest in TTI. Maybe that sort of metaprogramming is only of interest to other metaprogrammers and not normal end-users. Which of course does not bode well for a review even though the library is quite good in the creator's opinion. I am attempting to either get my VMD library reviewed first or integrate VMD functionality into pp-lib. I am trying to do that because TTI partially depends on VMD, although one can use it without VMD. Have you tried the latest version of the TTI library ?

AMDG On 03/23/2011 04:10 PM, Edward Diener wrote:
I will be doing that. Unfortunately except for you and John Maddock no one else has ever expressed an interest in TTI.
Well, let me express interest too.
Maybe that sort of metaprogramming is only of interest to other metaprogrammers and not normal end-users.
That's probably true. I don't need functionality like this often, but when I do need it, it's really important. The most common use case for me is to preserve backwards compatibility when concept requirments change. (For instance, BOOST_MPL_HAS_TEMPLATE_XXX was critical for implementing result_of support in Boost.Lambda.)
Which of course does not bode well for a review even though the library is quite good in the creator's opinion.
In Christ, Steven Watanabe

On 3/23/2011 8:25 PM, Steven Watanabe wrote:
AMDG
On 03/23/2011 04:10 PM, Edward Diener wrote:
I will be doing that. Unfortunately except for you and John Maddock no one else has ever expressed an interest in TTI.
Well, let me express interest too.
It is very much appreciated. Feel free to look at it and critiqued it if you like and I will gladly listen and explain my decisions.
Maybe that sort of metaprogramming is only of interest to other metaprogrammers and not normal end-users.
That's probably true. I don't need functionality like this often, but when I do need it, it's really important. The most common use case for me is to preserve backwards compatibility when concept requirments change. (For instance, BOOST_MPL_HAS_TEMPLATE_XXX was critical for implementing result_of support in Boost.Lambda.)
The idea of the library is to provide this sort of compile-time introspection for as many nested elements as could be effectively done. I did not succeed for nested function templates but the doc explains why. I did lift the BOOST_MPL_HAS_TEMPLATE_XXX into TTI under another ( I think more user-friendly ) name into TTI. All other elements have a way of being introspected and I did add to my use of BOOST_MPL_HAS_TEMPLATE_XXX more functionality which introspects a specific class template signature, if that would ever be needed. Much of the techniques were borrowed but I think I did a good job of overall design, although it took me a few iterations/releases to settle on the final ways of doing everything. I would like to have it reviewed although I am also working to get VMD into Boost, either as standalone or as part of pp-lib. Since TTI depends optionally on some very small part of VMD, I am trying to get VMD reviewed before TTI. But I know there is precedent for reviewing a library even when it depends on another library which has not been reviewed/accepted into Boost yet. In the case of TTI, I can easily add the VMD functionality which it uses directly into the library if VMD in some form does not get into Boost.

On Mar 23, 2011, at 7:10 PM, Edward Diener wrote:
I will be doing that. Unfortunately except for you and John Maddock no one else has ever expressed an interest in TTI. Maybe that sort of metaprogramming is only of interest to other metaprogrammers and not normal end-users. Which of course does not bode well for a review even though the library is quite good in the creator's opinion.
Introspection is a sorely missing feature in C++. I bet you will get a good few reviews. Seems like a library mostly for library writers, but everyone should be a library writer. ;-) I think you will face the typical "meta-" barrier where people are not yet used to using template metaprogramming, but you'll get plenty of users over time. If C++ ever integrates metaprogramming better into the language (syntax and internals), libraries like this will motivate that change. Cheers, Gordon

On 3/24/2011 11:03 PM, Gordon Woodhull wrote:
On Mar 23, 2011, at 7:10 PM, Edward Diener wrote:
I will be doing that. Unfortunately except for you and John Maddock no one else has ever expressed an interest in TTI. Maybe that sort of metaprogramming is only of interest to other metaprogrammers and not normal end-users. Which of course does not bode well for a review even though the library is quite good in the creator's opinion.
Introspection is a sorely missing feature in C++.
I bet you will get a good few reviews. Seems like a library mostly for library writers, but everyone should be a library writer. ;-)
I should not have expressed concerns about reviews at this stage. I just had not heard much from many other programmers about the practical importance of TTI and was holding off asking for a review until others expressed interest in it.
I think you will face the typical "meta-" barrier where people are not yet used to using template metaprogramming, but you'll get plenty of users over time.
If C++ ever integrates metaprogramming better into the language (syntax and internals), libraries like this will motivate that change.
Both compile-time introspection, such as TTI does, and run-time introspection, in which I am also interested ( as the sandbox mirror library shows ) has its importance in programming.
participants (4)
-
Edward Diener
-
Gordon Woodhull
-
Steven Watanabe
-
Vicente BOTET