hash_map: Remove forward declaration of equality operator...
authorPaolo Carlini <pcarlini@suse.de>
Thu, 21 Sep 2006 17:54:50 +0000 (17:54 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Thu, 21 Sep 2006 17:54:50 +0000 (17:54 +0000)
2006-09-21  Paolo Carlini  <pcarlini@suse.de>

* include/ext/hash_map: Remove forward declaration of equality
operator, not needed for friendship of all its instances.
* include/ext/hash_set: Likewise.
* include/bits/stl_set.h: Likewise for equality operator and
operator less.
* include/bits/stl_multiset.h: Likewise.
* include/bits/stl_multimap.h: Likewise.
* include/bits/stl_queue.h: Likewise.
* include/bits/stl_stack.h: Likewise.
* include/bits/streambuf_iterator.h: Likewise for copy.
* include/std/std_streambuf.h: Likewise for __copy_aux and find.
* include/tr1/boost_shared_ptr.h: Likewise for get_deleter.
* include/tr1/random: Likewise, remove all forward declarations
of inserters and extractors.

From-SVN: r117116

12 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/stl_multimap.h
libstdc++-v3/include/bits/stl_multiset.h
libstdc++-v3/include/bits/stl_queue.h
libstdc++-v3/include/bits/stl_set.h
libstdc++-v3/include/bits/stl_stack.h
libstdc++-v3/include/bits/streambuf_iterator.h
libstdc++-v3/include/ext/hash_map
libstdc++-v3/include/ext/hash_set
libstdc++-v3/include/std/std_streambuf.h
libstdc++-v3/include/tr1/boost_shared_ptr.h
libstdc++-v3/include/tr1/random

index ca26e47959bc3a75d8a14c64e0760e756e9f8d51..e85e75a613103e4e70790ec20c3262038ee701a9 100644 (file)
@@ -1,3 +1,20 @@
+2006-09-21  Paolo Carlini  <pcarlini@suse.de>
+
+       * include/ext/hash_map: Remove forward declaration of equality
+       operator, not needed for friendship of all its instances.
+       * include/ext/hash_set: Likewise.
+       * include/bits/stl_set.h: Likewise for equality operator and
+       operator less.
+       * include/bits/stl_multiset.h: Likewise.
+       * include/bits/stl_multimap.h: Likewise.
+       * include/bits/stl_queue.h: Likewise.
+       * include/bits/stl_stack.h: Likewise.
+       * include/bits/streambuf_iterator.h: Likewise for copy.
+       * include/std/std_streambuf.h: Likewise for __copy_aux and find.
+       * include/tr1/boost_shared_ptr.h: Likewise for get_deleter.
+       * include/tr1/random: Likewise, remove all forward declarations
+       of inserters and extractors.
+
 2006-09-21  Paolo Carlini  <pcarlini@suse.de>
 
        * include/ext/sso_string_base.h (__sso_string_base<>::_M_max_size(),
index 41e93a2ef30e8cd6866ecb5024caca2a0210b33a..b11b6e409d57204842fa2044341ce9e7716d9b58 100644 (file)
 
 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
 
-  // Forward declaration of operators < and ==, needed for friend declaration.
-
-  template <typename _Key, typename _Tp,
-            typename _Compare = std::less<_Key>,
-            typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
-    class multimap;
-
-  template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
-    inline bool
-    operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
-              const multimap<_Key, _Tp, _Compare, _Alloc>& __y);
-
-  template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
-    inline bool
-    operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
-             const multimap<_Key, _Tp, _Compare, _Alloc>& __y);
-
   /**
    *  @brief A standard container made up of (key,value) pairs, which can be
    *  retrieved based on a key, in logarithmic time.
@@ -103,7 +86,9 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
    *  called (*_unique versus *_equal, same as the standard).
    *  @endif
   */
-  template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+  template <typename _Key, typename _Tp,
+           typename _Compare = std::less<_Key>,
+           typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
     class multimap
     {
     public:
index dd6e976117c6c5d7e583281e39f252115feced85..8c499c3690f63d0335827cc5aa8f942a6745437f 100644 (file)
 
 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
 
-  // Forward declaration of operators < and ==, needed for friend declaration.
-  template <class _Key, class _Compare = std::less<_Key>,
-           class _Alloc = std::allocator<_Key> >
-    class multiset;
-
-  template <class _Key, class _Compare, class _Alloc>
-    inline bool
-    operator==(const multiset<_Key, _Compare, _Alloc>& __x,
-              const multiset<_Key, _Compare, _Alloc>& __y);
-
-  template <class _Key, class _Compare, class _Alloc>
-    inline bool
-    operator<(const multiset<_Key, _Compare, _Alloc>& __x,
-             const multiset<_Key, _Compare, _Alloc>& __y);
-
   /**
    *  @brief A standard container made up of elements, which can be retrieved
    *  in logarithmic time.
@@ -100,7 +85,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
    *  called (*_unique versus *_equal, same as the standard).
    *  @endif
   */
-  template <class _Key, class _Compare, class _Alloc>
+  template <class _Key, class _Compare = std::less<_Key>,
+           class _Alloc = std::allocator<_Key> >
     class multiset
     {
       // concept requirements
index 84c003540ed422119ec9ad9c6887c963df7ffb69..04e3a7b46e0212a0420e1634d8bb4a89b9c1ec57 100644 (file)
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
-  // Forward declarations of operators < and ==, needed for friend declaration.
-  template<typename _Tp, typename _Sequence = deque<_Tp> >
-    class queue;
-
-  template<typename _Tp, typename _Seq>
-    inline bool
-    operator==(const queue<_Tp, _Seq>&, const queue<_Tp, _Seq>&);
-
-  template<typename _Tp, typename _Seq>
-    inline bool
-    operator<(const queue<_Tp, _Seq>&, const queue<_Tp, _Seq>&);
-
   /**
    *  @brief  A standard container giving FIFO behavior.
    *
@@ -103,7 +91,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
    *  which is a typedef for the second Sequence parameter, and @c push and
    *  @c pop, which are standard %queue/FIFO operations.
   */
-  template<typename _Tp, typename _Sequence>
+  template<typename _Tp, typename _Sequence = deque<_Tp> >
     class queue
     {
       // concept requirements
index ed362f13c1ed1d3d2dfd41a75b875c94a13cb510..b61106aef65244893309d8995297111ddabe5ec2 100644 (file)
 
 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
 
-  // Forward declarations of operators < and ==, needed for friend declaration.
-  template<class _Key, class _Compare = std::less<_Key>,
-          class _Alloc = std::allocator<_Key> >
-    class set;
-
-  template<class _Key, class _Compare, class _Alloc>
-    inline bool
-    operator==(const set<_Key, _Compare, _Alloc>& __x,
-              const set<_Key, _Compare, _Alloc>& __y);
-
-  template<class _Key, class _Compare, class _Alloc>
-    inline bool
-    operator<(const set<_Key, _Compare, _Alloc>& __x,
-             const set<_Key, _Compare, _Alloc>& __y);
-
   /**
    *  @brief A standard container made up of unique keys, which can be
    *  retrieved in logarithmic time.
@@ -103,7 +88,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
    *  called (*_unique versus *_equal, same as the standard).
    *  @endif
   */
-  template<class _Key, class _Compare, class _Alloc>
+  template<class _Key, class _Compare = std::less<_Key>,
+          class _Alloc = std::allocator<_Key> >
     class set
     {
       // concept requirements
index a6b5533f563614098b214aeccc0d282d743af8e8..f5b41facb034383f171016c78b117e9f13f7df0f 100644 (file)
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
-  // Forward declarations of operators == and <, needed for friend
-  // declaration.
-  template<typename _Tp, typename _Sequence = deque<_Tp> >
-    class stack;
-
-  template<typename _Tp, typename _Seq>
-    inline bool
-    operator==(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y);
-
-  template<typename _Tp, typename _Seq>
-    inline bool
-    operator<(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y);
-
   /**
    *  @brief  A standard container giving FILO behavior.
    *
@@ -107,7 +94,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
    *  push, @c pop, and @c top, which are standard %stack/FILO
    *  operations.
   */
-  template<typename _Tp, typename _Sequence>
+  template<typename _Tp, typename _Sequence = deque<_Tp> >
     class stack
     {
       // concept requirements
index 8c76013d324d25f84add571a4ea0a914ebf183e5..a1cf234a3870371c49c38ca4820c72ff964b7cc4 100644 (file)
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
      
-  template<typename _CharT>
-    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 
-                                   ostreambuf_iterator<_CharT> >::__type
-    copy(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
-        ostreambuf_iterator<_CharT>);
-
   // 24.5.3 Template class istreambuf_iterator
   /// Provides input iterator semantics for streambufs.
   template<typename _CharT, typename _Traits>
index 2367c77415ec0752ecaa1401212f27fbd1c68732..b6855ebb3beb0fd3218e79fae211786477a37d14 100644 (file)
@@ -72,23 +72,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(__gnu_cxx, _GLIBCXX_EXT)
   using std::pair;
   using std::_Select1st;
 
-  // Forward declaration of equality operator; needed for friend
-  // declaration.
-  template<class _Key, class _Tp, class _HashFn = hash<_Key>,
-          class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> >
-    class hash_map;
-
-  template<class _Key, class _Tp, class _HashFn, class _EqKey, class _Alloc>
-    inline bool
-    operator==(const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&,
-              const hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>&);
-
   /**
    *  This is an SGI extension.
    *  @ingroup SGIextensions
    *  @doctodo
    */
-  template<class _Key, class _Tp, class _HashFn, class _EqualKey, class _Alloc>
+  template<class _Key, class _Tp, class _HashFn = hash<_Key>,
+          class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> >
     class hash_map
     {
     private:
@@ -295,25 +285,16 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(__gnu_cxx, _GLIBCXX_EXT)
         hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2)
     { __hm1.swap(__hm2); }
 
-  // Forward declaration of equality operator; needed for friend declaration.
-  template<class _Key, class _Tp,
-           class _HashFn  = hash<_Key>,
-           class _EqualKey = equal_to<_Key>,
-           class _Alloc =  allocator<_Tp> >
-    class hash_multimap;
-
-  template<class _Key, class _Tp, class _HF, class _EqKey, class _Alloc>
-    inline bool
-    operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1,
-              const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2);
 
   /**
    *  This is an SGI extension.
    *  @ingroup SGIextensions
    *  @doctodo
    */
-  template<class _Key, class _Tp, class _HashFn, class _EqualKey,
-           class _Alloc>
+  template<class _Key, class _Tp,
+          class _HashFn = hash<_Key>,
+          class _EqualKey = equal_to<_Key>,
+          class _Alloc = allocator<_Tp> >
     class hash_multimap
     {
       // concept requirements
index 02cc99fb96efff34f65c23333c3e2e09f9e48ecd..668fe13bd2a4ecc72650c6c2d7d405547755e2f8 100644 (file)
@@ -72,24 +72,14 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(__gnu_cxx, _GLIBCXX_EXT)
   using std::pair;
   using std::_Identity;
 
-  // Forward declaration of equality operator; needed for friend
-  // declaration.
-  template<class _Value, class _HashFcn  = hash<_Value>,
-           class _EqualKey = equal_to<_Value>,
-           class _Alloc = allocator<_Value> >
-    class hash_set;
-
-  template<class _Value, class _HashFcn, class _EqualKey, class _Alloc>
-    inline bool
-    operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1,
-              const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2);
-
   /**
    *  This is an SGI extension.
    *  @ingroup SGIextensions
    *  @doctodo
    */
-  template<class _Value, class _HashFcn, class _EqualKey, class _Alloc>
+  template<class _Value, class _HashFcn  = hash<_Value>,
+          class _EqualKey = equal_to<_Value>,
+          class _Alloc = allocator<_Value> >
     class hash_set
     {
       // concept requirements
@@ -285,24 +275,16 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(__gnu_cxx, _GLIBCXX_EXT)
         hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2)
     { __hs1.swap(__hs2); }
 
-  template<class _Value,
-           class _HashFcn = hash<_Value>,
-           class _EqualKey = equal_to<_Value>,
-           class _Alloc = allocator<_Value> >
-    class hash_multiset;
-
-  template<class _Val, class _HashFcn, class _EqualKey, class _Alloc>
-    inline bool
-    operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1,
-              const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2);
-
 
   /**
    *  This is an SGI extension.
    *  @ingroup SGIextensions
    *  @doctodo
    */
-  template<class _Value, class _HashFcn, class _EqualKey, class _Alloc>
+  template<class _Value,
+          class _HashFcn = hash<_Value>,
+          class _EqualKey = equal_to<_Value>,
+          class _Alloc = allocator<_Value> >
     class hash_multiset
     {
       // concept requirements
index 5a5ca869289458bd739eedfab0d8023111c941f8..67ffaf335f6746e32a6636e929bcaecd7790b04d 100644 (file)
@@ -60,18 +60,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
                          basic_streambuf<_CharT, _Traits>*, bool&);
 
-  template<typename _CharT>
-    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 
-                                   _CharT*>::__type
-    __copy_aux(istreambuf_iterator<_CharT>,
-              istreambuf_iterator<_CharT>, _CharT*);
-
-  template<typename _CharT>
-    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
-                                   istreambuf_iterator<_CharT> >::__type
-    find(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
-        const _CharT&);
-
   /**
    *  @brief  The actual work of input and output (interface).
    *
index dfe5f171b6d003db8494b9ba092b7975f31219f3..bc8028d08c79d983d5bb0ff7cdd3be683adf97e9 100644 (file)
@@ -483,11 +483,6 @@ template<_Lock_policy _Lp>
   { }
 
 
-// Function get_deleter must be declared before friend declaration by
-// shared_ptr.
-template<typename _Del, typename _Tp, _Lock_policy _Lp>
-  _Del* get_deleter(const __shared_ptr<_Tp, _Lp>&);
-
 /**
  *  @class shared_ptr <tr1/memory>
  *
index b926c5bf439f870b8db73b84ce3a8d5d94263bb0..05286ee17ddf1af939312d5e2106ec9c3531b17e 100644 (file)
@@ -295,21 +295,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    *
    * The size of the state is @f$ 1 @f$.
    */
-  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
-    class linear_congruential;
-
-  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m,
-          typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const linear_congruential<_UIntType, __a, __c, __m>& __lcr);
-
-  template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m,
-          typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              linear_congruential<_UIntType, __a, __c, __m>& __lcr);
-
   template<class _UIntType, _UIntType __a, _UIntType __c, _UIntType __m>
     class linear_congruential
     {
@@ -503,29 +488,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * @var output_c    The second left-shift tempering matrix mask.
    * @var output_l    The second right-shift tempering matrix parameter.
    */
-  template<class _UIntType, int __w, int __n, int __m, int __r,
-          _UIntType __a, int __u, int __s, _UIntType __b, int __t,
-          _UIntType __c, int __l>
-    class mersenne_twister;
-
-  template<class _UIntType, int __w, int __n, int __m, int __r,
-          _UIntType __a, int __u, int __s, _UIntType __b, int __t,
-          _UIntType __c, int __l,
-          typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const mersenne_twister<_UIntType, __w, __n, __m,
-              __r, __a, __u, __s, __b, __t, __c, __l>& __x);
-
-  template<class _UIntType, int __w, int __n, int __m, int __r,
-          _UIntType __a, int __u, int __s, _UIntType __b, int __t,
-          _UIntType __c, int __l,
-          typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              mersenne_twister<_UIntType, __w, __n, __m,
-              __r, __a, __u, __s, __b, __t, __c, __l>& __x);
-
   template<class _UIntType, int __w, int __n, int __m, int __r,
           _UIntType __a, int __u, int __s, _UIntType __b, int __t,
           _UIntType __c, int __l>
@@ -706,21 +668,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * @var _M_p     Current index of x(i - r).
    * @endif
    */
-  template<typename _IntType, _IntType __m, int __s, int __r>
-    class subtract_with_carry;
-
-  template<typename _IntType, _IntType __m, int __s, int __r,
-          typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const subtract_with_carry<_IntType, __m, __s, __r>& __x);
-
-  template<typename _IntType, _IntType __m, int __s, int __r,
-          typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              subtract_with_carry<_IntType, __m, __s, __r>& __x);
-
   template<typename _IntType, _IntType __m, int __s, int __r>
     class subtract_with_carry
     {
@@ -898,21 +845,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * @var _M_npows Precomputed negative powers of 2.   
    * @endif
    */
-  template<typename _RealType, int __w, int __s, int __r>
-    class subtract_with_carry_01;
-
-  template<typename _RealType, int __w, int __s, int __r,
-          typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const subtract_with_carry_01<_RealType, __w, __s, __r>& __x);
-
-  template<typename _RealType, int __w, int __s, int __r,
-          typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              subtract_with_carry_01<_RealType, __w, __s, __r>& __x);
-
   template<typename _RealType, int __w, int __s, int __r>
     class subtract_with_carry_01
     {
@@ -1104,22 +1036,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    *
    * 0 <= @p __r <= @p __p
    */
-  template<class _UniformRandomNumberGenerator, int __p, int __r>
-    class discard_block;
-
-  template<class _UniformRandomNumberGenerator, int __p, int __r,
-          typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const discard_block<_UniformRandomNumberGenerator,
-              __p, __r>& __x);
-
-  template<class _UniformRandomNumberGenerator, int __p, int __r,
-          typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              discard_block<_UniformRandomNumberGenerator, __p, __r>& __x);
-
   template<class _UniformRandomNumberGenerator, int __p, int __r>
     class discard_block
     {
@@ -1325,26 +1241,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * A random number generator adaptor class that combines two random number
    * generator engines into a single output sequence.
    */
-  template<class _UniformRandomNumberGenerator1, int __s1,
-          class _UniformRandomNumberGenerator2, int __s2>
-    class xor_combine;
-
-  template<class _UniformRandomNumberGenerator1, int __s1,
-          class _UniformRandomNumberGenerator2, int __s2,
-          typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const xor_combine<_UniformRandomNumberGenerator1, __s1,
-              _UniformRandomNumberGenerator2, __s2>& __x);
-
-  template<class _UniformRandomNumberGenerator1, int __s1,
-          class _UniformRandomNumberGenerator2, int __s2,
-          typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              xor_combine<_UniformRandomNumberGenerator1, __s1,
-              _UniformRandomNumberGenerator2, __s2>& __x);
-
   template<class _UniformRandomNumberGenerator1, int __s1,
           class _UniformRandomNumberGenerator2, int __s2>
     class xor_combine
@@ -1616,19 +1512,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * probability throughout the range.
    */
   template<typename _IntType = int>
-    class uniform_int;
-
-  template<typename _IntType, typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const uniform_int<_IntType>& __x);
-
-  template<typename _IntType, typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              uniform_int<_IntType>& __x);
-
-  template<typename _IntType>
     class uniform_int
     {
       __glibcxx_class_requires(_IntType, _IntegerConcept)
@@ -1758,13 +1641,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * Generates a sequence of true and false values with likelihood @f$ p @f$
    * that true will come up and @f$ (1 - p) @f$ that false will appear.
    */
-  class bernoulli_distribution;
-
-  template<typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const bernoulli_distribution& __x);
-
   class bernoulli_distribution
   {
   public:
@@ -1855,15 +1731,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * distribution.
    */
   template<typename _IntType = int, typename _RealType = double>
-    class geometric_distribution;
-
-  template<typename _IntType, typename _RealType,
-          typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const geometric_distribution<_IntType, _RealType>& __x);
-
-  template<typename _IntType, typename _RealType>
     class geometric_distribution
     {
     public:
@@ -1951,21 +1818,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * parameter of the distribution.
    */
   template<typename _IntType = int, typename _RealType = double>
-    class poisson_distribution;
-
-  template<typename _IntType, typename _RealType,
-          typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const poisson_distribution<_IntType, _RealType>& __x);
-
-  template<typename _IntType, typename _RealType,
-          typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              poisson_distribution<_IntType, _RealType>& __x);
-
-  template<typename _IntType, typename _RealType>
     class poisson_distribution
     {
     public:
@@ -2053,21 +1905,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * and @f$ p @f$ are the parameters of the distribution.
    */
   template<typename _IntType = int, typename _RealType = double>
-    class binomial_distribution;
-
-  template<typename _IntType, typename _RealType,
-          typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const binomial_distribution<_IntType, _RealType>& __x);
-
-  template<typename _IntType, typename _RealType,
-          typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              binomial_distribution<_IntType, _RealType>& __x);
-
-  template<typename _IntType, typename _RealType>
     class binomial_distribution
     {
     public:
@@ -2176,19 +2013,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * deliver number in the range [0, 1).
    */
   template<typename _RealType = double>
-    class uniform_real;
-  
-  template<typename _RealType, typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const uniform_real<_RealType>& __x);
-
-  template<typename _RealType, typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              uniform_real<_RealType>& __x);
-
-  template<typename _RealType>
     class uniform_real
     {
     public:
@@ -2278,14 +2102,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * </table>
    */
   template<typename _RealType = double>
-    class exponential_distribution;
-
-  template<typename _RealType, typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const exponential_distribution<_RealType>& __x);
-
-  template<typename _RealType>
     class exponential_distribution
     {
     public:
@@ -2369,19 +2185,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    *            e^{- \frac{{x - mean}^ {2}}{2 \sigma ^ {2}} } @f$.
    */
   template<typename _RealType = double>
-    class normal_distribution;
-
-  template<typename _RealType, typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const normal_distribution<_RealType>& __x);
-
-  template<typename _RealType, typename _CharT, typename _Traits>
-    std::basic_istream<_CharT, _Traits>&
-    operator>>(std::basic_istream<_CharT, _Traits>& __is,
-              normal_distribution<_RealType>& __x);
-
-  template<typename _RealType>
     class normal_distribution
     {
     public:
@@ -2471,14 +2274,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
    * @f$ p(x) = \frac{1}{\Gamma(\alpha)} x^{\alpha - 1} e^{-x} } @f$.
    */
   template<typename _RealType = double>
-    class gamma_distribution;
-
-  template<typename _RealType, typename _CharT, typename _Traits>
-    std::basic_ostream<_CharT, _Traits>&
-    operator<<(std::basic_ostream<_CharT, _Traits>& __os,
-              const gamma_distribution<_RealType>& __x);
-
-  template<typename _RealType>
     class gamma_distribution
     {
     public: