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

Reply via email to