
I tried to roll my own solution but I'm failing to see how to enable the specialization for certain iterator types. What I have done is to create a generic metafunction that applies unless a specialization is found template<class Iterator> struct is_contingous_in_memory : boost::mpl::false_ {}; Now, when dealing with std::vector<int> I can declare template<> struct is_contingous_in_memory<std::vector<int>::iterator> : boost::mpl::true_ {}; template<> struct is_contingous_in_memory<std::vector<int>::iterator> : boost::mpl::true_ {}; That way I would need to declare several variants for all integral and floating point types. So I thought, that I could write template<class T> struct is_contingous_in_memory< typename std::vector<T>::iterator > : boost::mpl::true_ {}; but that fails to compile with "template parameter not used or deducible in partial specialization 'specialization'". How to deal with that (on MSVC 9)? Best regards, Christoph