Martin Bosticky writes: > Does anybody know if it is possible to extract a class type from a > pointer-to-member type/object? > > ie if i have > > template<class pointer_to_member_type> > void foo(pointer_to_member_type AMember) > { > ... //? can i figure out here what the type is for the object to which the > pointer-to-member pointer belongs? > }
For data members, it's quite straight forward: template<typename T> struct get_pointer_to_member_details; template<typename Class,typename Member> struct get_pointer_to_member_details<Member Class::*> { typedef Class class_type; typedef Member member_type; }; then use it like so: template<typename pointer_to_member_type> void foo(pointer_to_member_type AMember) { // extract class from pointer to member typedef typename get_pointer_to_member_details< pointer_to_member_type>::class_type class_type; } I can't remember OTOMH whether or not this will match pointer-to-member-functions; I've a feeling that you'll have to partially specialize get_pointer_to_member_details for each member function type you want to match (number of args and cv-qualification) HTH Anthony -- Anthony Williams Senior Software Engineer, Beran Instruments Ltd. Remove NOSPAM when replying, for timely response. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost