
Sorry if this duplicates any previous comments, but you get my perspective raw from the documentation, rather than following other reviews <g> I suspect I will only be able to reveiw the documentation as our production compiler is Borland, which I don't beleive is intended as a supported compiler. I find the motivation compelling enough to investigate the library, but wonder what to do about callable types that are not function types? Do we need a Callable Types library on top of function types? In partial answer to my own question, it is worth noting that a function pointer and a struct-with-overloaded-function-call-operator are VERY different beasts anyway - for instance only the struct type can be portably cast to void *, struct types may overload mulitple calling signatures, etc. Tag types: The list of tag types includes all variation of function and function pointer, but nothing for function references. Is this intentional? Given const and volatile are effectively independant dimensions, it would be nice for the tags not to require a specific ordering (i.e. const_volatile) However, apart from providing a redundant volatile_const set of typedef I have no better answer. This only starts to become a problem is the const/volatile set is expanded in a future C++ standard, so can safely be ignored for now <g> As I read on I can't help but notice the similarity with type_traits, but don't see any cross-reference in the docs. In particular, I'm wondering if the interfaces differ in any way, and whether the ultimate plan would be to submit function_types as an expansion to type_traits for library TR2? OK, that's the end of lunch-break, will try to take a deeper look this evening. AlisdairM