This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

V3 PATCH: valarray tweak.



The following patch has been applied to branch.

-- Gaby
2001-05-18  Gabriel Dos Reis  <gdr@codesourcery.com>

	* include/bits/std_valarray.h (valarray<>::operator[] const):
	Return a const reference.
	* testsuite/26_numerics/valarray_const_bracket.cc: New test.

Index: include/bits/std_valarray.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/std_valarray.h,v
retrieving revision 1.4.2.3
diff -p -r1.4.2.3 std_valarray.h
*** std_valarray.h	2001/05/14 19:49:04	1.4.2.3
--- std_valarray.h	2001/05/18 05:16:04
*************** namespace std
*** 120,126 ****
        	operator= (const _Expr<_Dom,_Tp>&);
  
        // _lib.valarray.access_ element access:
!       _Tp                 operator[](size_t) const;
        _Tp&                operator[](size_t);		
        // _lib.valarray.sub_ subset operations:
        _Expr<_SClos<_ValArray,_Tp>, _Tp> operator[](slice) const;
--- 120,127 ----
        	operator= (const _Expr<_Dom,_Tp>&);
  
        // _lib.valarray.access_ element access:
!       // XXX: LWG to be resolved.
!       const _Tp&                 operator[](size_t) const;
        _Tp&                operator[](size_t);		
        // _lib.valarray.sub_ subset operations:
        _Expr<_SClos<_ValArray,_Tp>, _Tp> operator[](slice) const;
*************** namespace std
*** 236,242 ****
  
    
    template<typename _Tp>
!   inline _Tp
    valarray<_Tp>::operator[] (size_t __i) const
    { return _M_data[__i]; }
  
--- 237,243 ----
  
    
    template<typename _Tp>
!   inline const _Tp&
    valarray<_Tp>::operator[] (size_t __i) const
    { return _M_data[__i]; }
  
Index: testsuite/26_numerics/valarray_const_bracket.cc
===================================================================
RCS file: valarray_const_bracket.cc
diff -N valarray_const_bracket.cc
*** /dev/null	Tue May  5 13:32:27 1998
--- valarray_const_bracket.cc	Thu May 17 22:16:04 2001
***************
*** 0 ****
--- 1,48 ----
+ // 20010518 gdr
+ 
+ // Copyright (C) 2001 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING.  If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+ 
+ // As a special exception, you may use this file as part of a free software
+ // library without restriction.  Specifically, if other files instantiate
+ // templates or use macros or inline functions from this file, or you compile
+ // this file and link it with other files to produce an executable, this
+ // file does not by itself cause the resulting executable to be covered by
+ // the GNU General Public License.  This exception does not however
+ // invalidate any other reasons why the executable file might be covered by
+ // the GNU General Public License.
+ 
+ #include <valarray>
+ 
+ // dg-do compile
+ 
+ template<typename P>
+   void copy(P, std::size_t) { }
+ 
+ template<typename T>
+   void test(const std::valarray<T>& v)
+   {
+      copy(&v[0], v.size());
+   }
+ 
+ int main()
+ {
+   std::valarray<double> v(190);
+   test(v);
+   return 0;
+ }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]