|
Boost : |
From: Daniel Frey (d.frey_at_[hidden])
Date: 2005-12-31 04:36:08
Eric Niebler wrote:
> There is a bug in Boost.Range that is causing boost::end() to execute a
> slower code path when called with a string literal. The type of "hello"
> is char const [6], and end() should be O(1). Indeed, Boost.Range has
> code to handle just this case, but it never gets called. The problem is
> the way overload resolution happens between these two functions
>
> template< typename T, std::size_t sz >
> const T* boost_range_end( const T (&array)[sz] )
>
> const char* boost_range_end( const char* s )
I think something like
template< typename T >
enable_if< is_same< T, char >, const char* >::type
boost_range_end( const T* s )
for the second overload should fix it.
Regards, Daniel
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk