it my implemention, i use BOOST_TYPEOF instead of typeof(). it seems work well for gcc and vc7.1 ,
 
 
 #include <boost/multi_index/member.hpp>   //for member
#include <boost/multi_index/mem_fun.hpp>  //for const_mem_fun
using boost::multi_index::member;
using boost::multi_index::const_mem_fun;

#include <boost/typeof/typeof.hpp>

/* MEMBER  */
template<typename T>
 struct get_details;

template<typename Class, typename Member>
struct get_details<Member Class::*>
{
    typedef Class class_type;
    typedef Member member_type;
};  
#define MEMBER(MemPtr) \
member< \
  get_details<BOOST_TYPEOF(MemPtr)>::class_type, \
  get_details<BOOST_TYPEOF(MemPtr)>::member_type, \
  MemPtr>
 
/* CONST_MEM_FUN  */
template<typename T>
  struct get_fun_details;

template<typename Class, typename Type>
struct get_fun_details<Type (Class::*)()const>
{
    typedef Class class_type;
    typedef Type  member_type;
};
#define CONST_MEM_FUN(MemFunPtr) \
const_mem_fun< \
  get_fun_details<BOOST_TYPEOF(MemFunPtr)>::class_type, \
  get_fun_details<BOOST_TYPEOF(MemFunPtr)>::member_type, \
  MemFunPtr>