Optimizing valarray::operator=(some-valarray-expression)
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@136291 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9c59d38112
commit
db86663223
@ -817,6 +817,8 @@ public:
|
|||||||
valarray& operator=(const gslice_array<value_type>& __ga);
|
valarray& operator=(const gslice_array<value_type>& __ga);
|
||||||
valarray& operator=(const mask_array<value_type>& __ma);
|
valarray& operator=(const mask_array<value_type>& __ma);
|
||||||
valarray& operator=(const indirect_array<value_type>& __ia);
|
valarray& operator=(const indirect_array<value_type>& __ia);
|
||||||
|
template <class _ValExpr>
|
||||||
|
valarray& operator=(const __val_expr<_ValExpr>& __v);
|
||||||
|
|
||||||
// element access:
|
// element access:
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
@ -2958,6 +2960,21 @@ valarray<_Tp>::operator=(const indirect_array<value_type>& __ia)
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class _Tp>
|
||||||
|
template <class _ValExpr>
|
||||||
|
inline _LIBCPP_INLINE_VISIBILITY
|
||||||
|
valarray<_Tp>&
|
||||||
|
valarray<_Tp>::operator=(const __val_expr<_ValExpr>& __v)
|
||||||
|
{
|
||||||
|
size_t __n = __v.size();
|
||||||
|
if (size() != __n)
|
||||||
|
resize(__n);
|
||||||
|
value_type* __t = __begin_;
|
||||||
|
for (size_t __i = 0; __i != __n; ++__t, ++__i)
|
||||||
|
*__t = result_type(__v[__i]);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
template <class _Tp>
|
template <class _Tp>
|
||||||
inline _LIBCPP_INLINE_VISIBILITY
|
inline _LIBCPP_INLINE_VISIBILITY
|
||||||
__val_expr<__slice_expr<const valarray<_Tp>&> >
|
__val_expr<__slice_expr<const valarray<_Tp>&> >
|
||||||
|
Loading…
x
Reference in New Issue
Block a user