
Synopsis:
Mostly look good to me!
namespace boost { namespace function_type { // Result: bool, Concept: MPL-Integral Constant template<typename T, typename QueryTag = undecorated> struct is_function_;
I don't like the trailing underscore much, but I see why it's there :-) On the other hand, since we're in a separate namespace from type_traits we could just drop the underscore... might lead to confusion though. Come to that having the underscore will lead to confusion as well IMO. I understand why you dropped the trailing "_type" suffix, but "is_function_type" was the only obvious alternative I could think of. Hmmm, how about "is_function_kind" ? Not pretty, but it kind of sums up what the meta-function does. Any other ideas anyone?
// Result: bool, Concept: MPL-Integral Constant template<typename T> struct is_function_pointer; template<typename T> struct is_function_reference; template<typename T> struct is_member_function_pointer_;
I think the trailing underscore has to go from there as well IMO. Ideally this one and the type traits one should be the same template. They have the same semantics don't they? While we're at it, can the traits inherit from boost::integral_constant<bool, true/false> please? They will still be MPL friendly, and they'll follow the type_traits and TR1 conceptual framework as well then. The rest of the synopsis looks good to me. John.