19 Sep
                
                    2006
                
            
            
                19 Sep
                
                '06
                
            
            
            
        
    
                8:34 p.m.
            
        The extension docs show: template <typename Iterator> typename result_of::deref<Iterator>::type deref(Iterator const& i) { typename result_of::deref<Iterator>::type result = extension::deref_impl<typename Iterator::ftag>:: template apply<Iterator>::call(i); return result; } Isn't that more complicated than necessary and likely to inhibit RVO? What about simply: template <typename Iterator> typename result_of::deref<Iterator>::type deref(Iterator const& i) { return extension::deref_impl<typename Iterator::ftag>:: template apply<Iterator>::call(i); } ?? -- Dave Abrahams Boost Consulting www.boost-consulting.com