Get result type of function
        Posted  
        
            by 
                Robert
            
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Robert
        
        
        
        Published on 2011-01-10T14:34:31Z
        Indexed on 
            2011/01/10
            14:53 UTC
        
        
        Read the original article
        Hit count: 177
        
I want to specialize a template function declared as:
template<typename Type> Type read(std::istream& is);
I then have a lot of static implementations
static int read_integer(std::istream& is);
a.s.o. Now I'd like to do a macro so that specialization of read is as simple as:
SPECIALIZE_READ(read_integer)
So I figured I'd go the boost::function_traits way and declare SPECIALIZE_READ as:
#define SPECIALIZE_READ(read_function) \
   template<> boost::function_traits<read_function>::result_type read(std::istream& is) { \
      return read_function(is); \
   }
but VC++ (2008) compiler complains with: 'boost::function_traits' : 'read_integer' is not a valid template type argument for parameter 'Function'
Ideas ?
© Stack Overflow or respective owner