diff options
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r-- | libstdc++-v3/include/bits/valarray_after.h | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/libstdc++-v3/include/bits/valarray_after.h b/libstdc++-v3/include/bits/valarray_after.h index 4838cd44b4f..8d73d42f27c 100644 --- a/libstdc++-v3/include/bits/valarray_after.h +++ b/libstdc++-v3/include/bits/valarray_after.h @@ -222,47 +222,71 @@ namespace std template<class _Clos, typename _Tp> inline valarray<_Tp> _Expr<_Clos, _Tp>::operator[](slice __s) const - { return _M_closure[__s]; } + { + valarray<_Tp> __v = valarray<_Tp>(*this)[__s]; + return __v; + } template<class _Clos, typename _Tp> inline valarray<_Tp> _Expr<_Clos, _Tp>::operator[](const gslice& __gs) const - { return _M_closure[__gs]; } + { + valarray<_Tp> __v = valarray<_Tp>(*this)[__gs]; + return __v; + } template<class _Clos, typename _Tp> inline valarray<_Tp> _Expr<_Clos, _Tp>::operator[](const valarray<bool>& __m) const - { return _M_closure[__m]; } + { + valarray<_Tp> __v = valarray<_Tp>(*this)[__m]; + return __v; + } template<class _Clos, typename _Tp> inline valarray<_Tp> _Expr<_Clos, _Tp>::operator[](const valarray<size_t>& __i) const - { return _M_closure[__i]; } + { + valarray<_Tp> __v = valarray<_Tp>(*this)[__i]; + return __v; + } template<class _Clos, typename _Tp> inline size_t _Expr<_Clos, _Tp>::size() const - { return _M_closure.size (); } + { return _M_closure.size(); } template<class _Clos, typename _Tp> inline valarray<_Tp> _Expr<_Clos, _Tp>::shift(int __n) const - { return valarray<_Tp>(_M_closure).shift(__n); } + { + valarray<_Tp> __v = valarray<_Tp>(*this).shift(__n); + return __v; + } template<class _Clos, typename _Tp> inline valarray<_Tp> _Expr<_Clos, _Tp>::cshift(int __n) const - { return valarray<_Tp>(_M_closure).cshift(__n); } + { + valarray<_Tp> __v = valarray<_Tp>(*this).cshift(__n); + return __v; + } template<class _Clos, typename _Tp> inline valarray<_Tp> _Expr<_Clos, _Tp>::apply(_Tp __f(const _Tp&)) const - { return valarray<_Tp>(_M_closure).apply(__f); } + { + valarray<_Tp> __v = valarray<_Tp>(*this).apply(__f); + return __v; + } template<class _Clos, typename _Tp> inline valarray<_Tp> _Expr<_Clos, _Tp>::apply(_Tp __f(_Tp)) const - { return valarray<_Tp>(_M_closure).apply(__f); } + { + valarray<_Tp> __v = valarray<_Tp>(*this).apply(__f); + return __v; + } // XXX: replace this with a more robust summation algorithm. template<class _Clos, typename _Tp> |