diff --git a/include/boost/numeric/ublas/vector.hpp b/include/boost/numeric/ublas/vector.hpp index ff8f0bbd..037fe98d 100644 --- a/include/boost/numeric/ublas/vector.hpp +++ b/include/boost/numeric/ublas/vector.hpp @@ -30,17 +30,26 @@ namespace boost { namespace numeric { namespace ublas { namespace detail { using namespace boost::numeric::ublas; + template + struct resize_functor { + void operator() (T& a, typename T::size_type size, bool preserve) const { + a.resize (size, preserve); + } + }; + + // Specialise for std::vector + template + struct resize_functor< std::vector > { + void operator() (std::vector& a, typename std::vector::size_type size, bool ) const { + a.resize (size); + } + }; + // Resizing helpers, allow preserve parameter to be used where possible template BOOST_UBLAS_INLINE void resize (T& a, typename T::size_type size, bool preserve) { - a.resize (size, preserve); - } - // Specialise for std::vector - template - BOOST_UBLAS_INLINE - void resize (std::vector &a, typename std::vector::size_type size, bool /* preserve */) { - a.resize (size); + resize_functor() (a, size, preserve); } }