
Neal Becker wrote:
I'm a bit confused.
I'm working with blitz++. It has
template<typename T, int N> class Array ...
which already has a begin(), end(), but I can't use them. I'm specializing boost::begin,end,etc to hide them (I don't want to modify the blitz Array class)
If I specialize range_begin:
namespace boost {
template<typename T, int N> inline typename blitz::array_iterator< blitz::Array<T,N> >::type range_begin (blitz::Array<T,N> & a) { return blitz::range_begin (a); } }
(Terminology issue: this is an overload, not a specialization.) The correct place for the range_begin() overload for conforming compilers would be in the same namespace as the Array class. That way, it is found via ADL. HTH, -- Eric Niebler Boost Consulting www.boost-consulting.com