++ 03. , IDE ++ 11. XCode 4.2 ++ 11 .
std::sort(std::valarray::begin(v), std::valarray::end(v)); - , , - . , valarray begin end Koenig .
std::valarray / . ++ 03 [] .
valarray .. ,
namespace notstd {
template<class T>
T* addressof(T& arg) {
return reinterpret_cast<T*>(
&const_cast<char&>(
reinterpret_cast<const volatile char&>(arg)));
}
template<class T>
T* begin( std::valarray<T>& v ) { return addressof(v[0]); }
template<class T>
T* end( std::valarray<T>& v ) { return begin(v)+v.size(); }
template<class T>
T const* begin( std::valarray<T> const& v ) { return addressof(v[0]); }
template<class T>
T const* end( std::valarray<T> const& v ) { return begin(v)+v.size(); }
}
notstd::begin valarray.