From e825bf4aa7870d98c32f49ac69a502cc2f3276dd Mon Sep 17 00:00:00 2001 From: Gabriel Dos Reis Date: Fri, 18 Aug 2000 11:01:22 +0000 Subject: [PATCH] valarray_meta.h (_Expr<>::shift, [...]): Implement. * bits/valarray_meta.h (_Expr<>::shift, _Expr::cshift, _Expr<>::apply): Implement. From-SVN: r35785 --- libstdc++-v3/ChangeLog | 5 +++++ libstdc++-v3/bits/valarray_meta.h | 27 +++++++++++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 829722b7a1a4..273a0abd23c8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2000-08-18 Gabriel Dos Reis + + * bits/valarray_meta.h (_Expr<>::shift, _Expr::cshift, + _Expr<>::apply): Implement. + 2000-08-18 Gabriel Dos Reis * bits/valarray_meta.h (_Expr<>::min, _Expr<>::max): Implement. diff --git a/libstdc++-v3/bits/valarray_meta.h b/libstdc++-v3/bits/valarray_meta.h index f52ddbfd2f5e..df637d0684ab 100644 --- a/libstdc++-v3/bits/valarray_meta.h +++ b/libstdc++-v3/bits/valarray_meta.h @@ -672,10 +672,9 @@ namespace std { value_type min() const; value_type max() const; -// _Meta<_ApplyFunctionWithValue<_Expr>, value_type> -// apply (value_type _M_func (value_type)) const; -// _Meta<_ApplyFunctionWithConstRef<_Expr>, value_type> -// apply (value_type _M_func (const value_type&)) const; + + valarray apply(value_type (*) (const value_type&)) const; + valarray apply(value_type (*) (value_type)) const; private: const _Clos _M_closure; @@ -718,7 +717,27 @@ namespace std { template inline size_t _Expr<_Clos,_Tp>::size () const { return _M_closure.size (); } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::shift(int __n) const + { return valarray<_Tp>(_M_closure).shift(__n); } + + template + inline valarray<_Tp> + _Expr<_Clos, _Tp>::cshift(int __n) const + { return valarray<_Tp>(_M_closure).cshift(__n); } + + ttemplate + inline valarray<_Tp> + _Expr<_Clos, _Tp>::apply(_Tp __f(const _Tp&)) const + { return valarray<_Tp>(_M_closure).apply(__f); } + ttemplate + inline valarray<_Tp> + _Expr<_Clos, _Tp>::apply(_Tp __f(_Tp)) const + { return valarray<_Tp>(_M_closure).apply(__f); } + // XXX: replace this with a more robust summation algorithm. template inline _Tp -- 2.43.5