Patchwork [v3] doxygen markup for template parameters

login
register
mail settings
Submitter Benjamin Kosnik
Date May 3, 2012, 4:29 p.m.
Message ID <20120503092940.65baf7f3@adair>
Download mbox | patch
Permalink /patch/156744/
State New
Headers show

Comments

Benjamin Kosnik - May 3, 2012, 4:29 p.m.
In libstdc++/44015, there is a request for doxygen markup on template
parameters, including default arguments. This is a kind of markup that
libstdc++ has mostly not done, or done inconsistently.

So, here's how I think it should be done, at least for io and
containers. 

See generated files here:
http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html

tested x86/linux

-benjamin

Patch

2012-05-02  Benjamin Kosnik  <bkoz@redhat.com>

	PR libstdc++/44015
	* include/bits/basic_ios.h: Add tparam markup for
	* doxygen.  include/bits/basic_string.h: Same.
	* include/bits/forward_list.h: Same.
	* include/bits/stl_bvector.h: Same.
	* include/bits/stl_deque.h: Same.
	* include/bits/stl_list.h: Same.  include/bits/stl_map.h:
	* Same.  include/bits/stl_multimap.h: Same.
	* include/bits/stl_multiset.h: Same.
	* include/bits/stl_pair.h: Same.
	* include/bits/stl_queue.h: Same.
	* include/bits/stl_set.h: Same.
	* include/bits/stl_stack.h: Same.
	* include/bits/stl_vector.h: Same.
	* include/bits/unordered_map.h: Same.
	* include/bits/unordered_set.h: Same.  include/std/array:
	* Same.  include/std/atomic: Same.  include/std/fstream:
	* Same.  include/std/istream: Same.  include/std/ostream:
	* Same.  include/std/sstream: Same.
	* include/std/streambuf: Same.
	* testsuite/23_containers/deque/requirements/dr438/*:
          Adjust line numbers.
	* testsuite/23_containers/list/requirements/dr438/*: Same.
	* testsuite/23_containers/vector/requirements/dr438/*: Same.

diff --git a/libstdc++-v3/include/bits/basic_ios.h b/libstdc++-v3/include/bits/basic_ios.h
index 24c3ca4..384bb4f 100644
--- a/libstdc++-v3/include/bits/basic_ios.h
+++ b/libstdc++-v3/include/bits/basic_ios.h
@@ -1,7 +1,7 @@ 
 // Iostreams base classes -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010, 2011
+// 2006, 2007, 2008, 2009, 2010, 2011, 2012
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -52,11 +52,15 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
       return *__f;
     }
 
-  // 27.4.5  Template class basic_ios
   /**
-   *  @brief  Virtual base class for all stream classes.
+   *  @brief Template class basic_ios, virtual base class for all
+   *  stream classes. 
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  Most of the member functions called dispatched on stream objects
    *  (e.g., @c std::cout.foo(bar);) are consolidated in this class.
   */
diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h
index 169daf5..24562c4 100644
--- a/libstdc++-v3/include/bits/basic_string.h
+++ b/libstdc++-v3/include/bits/basic_string.h
@@ -55,6 +55,11 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @ingroup strings
    *  @ingroup sequences
    *
+   *  @tparam _CharT  Type of character
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_CharT>.
+   *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and a
    *  <a href="tables.html#67">sequence</a>.  Of the
diff --git a/libstdc++-v3/include/bits/forward_list.h b/libstdc++-v3/include/bits/forward_list.h
index 76c3e33..ce35504 100644
--- a/libstdc++-v3/include/bits/forward_list.h
+++ b/libstdc++-v3/include/bits/forward_list.h
@@ -376,6 +376,9 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup sequences
    *
+   *  @tparam _Tp  Type of element.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_Tp>.
+   *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#67">sequence</a>, including the
    *  <a href="tables.html#68">optional sequence requirements</a> with the
diff --git a/libstdc++-v3/include/bits/stl_bvector.h b/libstdc++-v3/include/bits/stl_bvector.h
index dfa0b32..3adbfa1 100644
--- a/libstdc++-v3/include/bits/stl_bvector.h
+++ b/libstdc++-v3/include/bits/stl_bvector.h
@@ -500,13 +500,15 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *  @brief  A specialization of vector for booleans which offers fixed time
    *  access to individual elements in any order.
    *
+   *  @ingroup sequences
+   *
+   *  @tparam _Alloc  Allocator type.
+   *
    *  Note that vector<bool> does not actually meet the requirements for being
    *  a container.  This is because the reference and pointer types are not
    *  really references and pointers to bool.  See DR96 for details.  @see
    *  vector for function documentation.
    *
-   *  @ingroup sequences
-   *
    *  In some terminology a %vector can be described as a dynamic
    *  C-style array, it offers fast and efficient access to individual
    *  elements in any order and saves the user from worrying about
diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h
index d890419..157df3b 100644
--- a/libstdc++-v3/include/bits/stl_deque.h
+++ b/libstdc++-v3/include/bits/stl_deque.h
@@ -649,6 +649,9 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup sequences
    *
+   *  @tparam _Tp  Type of element.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_Tp>.
+   *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and a
    *  <a href="tables.html#67">sequence</a>, including the
diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h
index 634b579..b568cd7 100644
--- a/libstdc++-v3/include/bits/stl_list.h
+++ b/libstdc++-v3/include/bits/stl_list.h
@@ -411,6 +411,9 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup sequences
    *
+   *  @tparam _Tp  Type of element.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_Tp>.
+   *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and a
    *  <a href="tables.html#67">sequence</a>, including the
diff --git a/libstdc++-v3/include/bits/stl_map.h b/libstdc++-v3/include/bits/stl_map.h
index f1c4cfe..881f938 100644
--- a/libstdc++-v3/include/bits/stl_map.h
+++ b/libstdc++-v3/include/bits/stl_map.h
@@ -73,6 +73,12 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup associative_containers
    *
+   *  @tparam _Key  Type of key objects.
+   *  @tparam  _Tp  Type of mapped objects.
+   *  @tparam _Compare  Comparison function object type, defaults to less<_Key>.
+   *  @tparam _Alloc  Allocator type, defaults to 
+   *                  allocator<pair<const _Key, _Tp>.
+   *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and an
    *  <a href="tables.html#69">associative container</a> (using unique keys).
diff --git a/libstdc++-v3/include/bits/stl_multimap.h b/libstdc++-v3/include/bits/stl_multimap.h
index ae4389e..6c92bcd 100644
--- a/libstdc++-v3/include/bits/stl_multimap.h
+++ b/libstdc++-v3/include/bits/stl_multimap.h
@@ -72,6 +72,12 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup associative_containers
    *
+   *  @tparam _Key  Type of key objects.
+   *  @tparam  _Tp  Type of mapped objects.
+   *  @tparam _Compare  Comparison function object type, defaults to less<_Key>.
+   *  @tparam _Alloc  Allocator type, defaults to 
+   *                  allocator<pair<const _Key, _Tp>.
+   *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and an
    *  <a href="tables.html#69">associative container</a> (using equivalent
diff --git a/libstdc++-v3/include/bits/stl_multiset.h b/libstdc++-v3/include/bits/stl_multiset.h
index ab467c8..ecf9e54 100644
--- a/libstdc++-v3/include/bits/stl_multiset.h
+++ b/libstdc++-v3/include/bits/stl_multiset.h
@@ -72,6 +72,11 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup associative_containers
    *
+   *
+   *  @tparam _Key  Type of key objects.
+   *  @tparam _Compare  Comparison function object type, defaults to less<_Key>.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_Key>.
+   *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and an
    *  <a href="tables.html#69">associative container</a> (using equivalent
diff --git a/libstdc++-v3/include/bits/stl_pair.h b/libstdc++-v3/include/bits/stl_pair.h
index c1df571..45a1c61 100644
--- a/libstdc++-v3/include/bits/stl_pair.h
+++ b/libstdc++-v3/include/bits/stl_pair.h
@@ -83,7 +83,12 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
     struct _Index_tuple;
 #endif
 
-  /// Struct holding two objects of arbitrary type.
+ /**
+   *  @brief Struct holding two objects of arbitrary type.
+   *
+   *  @tparam _T1  Type of first object.
+   *  @tparam _T2  Type of second object.
+   */
   template<class _T1, class _T2>
     struct pair
     {
diff --git a/libstdc++-v3/include/bits/stl_queue.h b/libstdc++-v3/include/bits/stl_queue.h
index fe65e9b..82ab85e 100644
--- a/libstdc++-v3/include/bits/stl_queue.h
+++ b/libstdc++-v3/include/bits/stl_queue.h
@@ -1,7 +1,7 @@ 
 // Queue implementation -*- C++ -*-
 
 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-// 2010, 2011
+// 2010, 2011, 2012
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -70,6 +70,9 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  @ingroup sequences
    *
+   *  @tparam _Tp  Type of element.
+   *  @tparam _Sequence  Type of underlying sequence, defaults to deque<_Tp>.
+   *
    *  Meets many of the requirements of a
    *  <a href="tables.html#65">container</a>,
    *  but does not define anything to do with iterators.  Very few of the
@@ -326,6 +329,11 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  @ingroup sequences
    *
+   *  @tparam _Tp  Type of element.
+   *  @tparam _Sequence  Type of underlying sequence, defaults to vector<_Tp>.
+   *  @tparam _Compare  Comparison function object type, defaults to 
+   *                    less<_Sequence::value_type>.
+   *
    *  This is not a true container, but an @e adaptor.  It holds
    *  another container, and provides a wrapper interface to that
    *  container.  The wrapper is what enforces priority-based sorting 
diff --git a/libstdc++-v3/include/bits/stl_set.h b/libstdc++-v3/include/bits/stl_set.h
index 18fd117..312e57a 100644
--- a/libstdc++-v3/include/bits/stl_set.h
+++ b/libstdc++-v3/include/bits/stl_set.h
@@ -72,16 +72,16 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup associative_containers
    *
+   *  @tparam _Key  Type of key objects.
+   *  @tparam _Compare  Comparison function object type, defaults to less<_Key>.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_Key>.
+   *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and an
    *  <a href="tables.html#69">associative container</a> (using unique keys).
    *
    *  Sets support bidirectional iterators.
    *
-   *  @tparam  _Key  Type of key objects.
-   *  @tparam  _Compare  Comparison function object type, defaults to less<Key>.
-   *  @tparam  _Alloc  Allocator type, defaults to allocator<Key>.
-   *
    *  The private tree data is declared exactly the same way for set and
    *  multiset; the distinction is made entirely in how the tree functions are
    *  called (*_unique versus *_equal, same as the standard).
diff --git a/libstdc++-v3/include/bits/stl_stack.h b/libstdc++-v3/include/bits/stl_stack.h
index 6b0f065..4f61bfb 100644
--- a/libstdc++-v3/include/bits/stl_stack.h
+++ b/libstdc++-v3/include/bits/stl_stack.h
@@ -1,7 +1,7 @@ 
 // Stack implementation -*- C++ -*-
 
 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-// 2010, 2011
+// 2010, 2011, 2012
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -70,6 +70,9 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  @ingroup sequences
    *
+   *  @tparam _Tp  Type of element.
+   *  @tparam _Sequence  Type of underlying sequence, defaults to deque<_Tp>.
+   *
    *  Meets many of the requirements of a
    *  <a href="tables.html#65">container</a>,
    *  but does not define anything to do with iterators.  Very few of the
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index 31660d3..6e229aa 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -192,6 +192,9 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup sequences
    *
+   *  @tparam _Tp  Type of element.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_Tp>.
+   *
    *  Meets the requirements of a <a href="tables.html#65">container</a>, a
    *  <a href="tables.html#66">reversible container</a>, and a
    *  <a href="tables.html#67">sequence</a>, including the
diff --git a/libstdc++-v3/include/bits/unordered_map.h b/libstdc++-v3/include/bits/unordered_map.h
index dd08b26..bd3e46d 100644
--- a/libstdc++-v3/include/bits/unordered_map.h
+++ b/libstdc++-v3/include/bits/unordered_map.h
@@ -77,9 +77,6 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup unordered_associative_containers
    *
-   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
-   *  <a href="tables.html#xx">unordered associative container</a>
-   *
    *  @tparam  _Key  Type of key objects.
    *  @tparam  _Tp  Type of mapped objects.
    *  @tparam  _Hash  Hashing function object type, defaults to hash<_Value>.
@@ -87,6 +84,9 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *                  to equal_to<_Value>.
    *  @tparam  _Alloc  Allocator type, defaults to allocator<_Key>.
    *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
    * The resulting value type of the container is std::pair<const _Key, _Tp>.
    *
    *  Base is _Hashtable, dispatched at compile time via template
@@ -141,9 +141,6 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup unordered_associative_containers
    *
-   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
-   *  <a href="tables.html#xx">unordered associative container</a>
-   *
    *  @tparam  _Key  Type of key objects.
    *  @tparam  _Tp  Type of mapped objects.
    *  @tparam  _Hash  Hashing function object type, defaults to hash<_Value>.
@@ -151,6 +148,9 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *                  to equal_to<_Value>.
    *  @tparam  _Alloc  Allocator type, defaults to allocator<_Key>.
    *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
    * The resulting value type of the container is std::pair<const _Key, _Tp>.
    *
    *  Base is _Hashtable, dispatched at compile time via template
diff --git a/libstdc++-v3/include/bits/unordered_set.h b/libstdc++-v3/include/bits/unordered_set.h
index bd0deb0..32b606a 100644
--- a/libstdc++-v3/include/bits/unordered_set.h
+++ b/libstdc++-v3/include/bits/unordered_set.h
@@ -72,9 +72,6 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup unordered_associative_containers
    *
-   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
-   *  <a href="tables.html#xx">unordered associative container</a>
-   *
    *  @tparam  _Value  Type of key objects.
    *  @tparam  _Hash  Hashing function object type, defaults to hash<_Value>.
 
@@ -83,6 +80,9 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @tparam  _Alloc  Allocator type, defaults to allocator<_Key>.
    *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
    *  Base is _Hashtable, dispatched at compile time via template
    *  alias __uset_hashtable.
    */
@@ -135,15 +135,15 @@  _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
    *
    *  @ingroup unordered_associative_containers
    *
-   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
-   *  <a href="tables.html#xx">unordered associative container</a>
-   *
    *  @tparam  _Value  Type of key objects.
    *  @tparam  _Hash  Hashing function object type, defaults to hash<_Value>.
    *  @tparam  _Pred  Predicate function object type, defaults
    *                  to equal_to<_Value>.
    *  @tparam  _Alloc  Allocator type, defaults to allocator<_Key>.
    *
+   *  Meets the requirements of a <a href="tables.html#65">container</a>, and
+   *  <a href="tables.html#xx">unordered associative container</a>
+   *
    *  Base is _Hashtable, dispatched at compile time via template
    *  alias __umset_hashtable.
    */
diff --git a/libstdc++-v3/include/std/array b/libstdc++-v3/include/std/array
index e895dd7..58263ce 100644
--- a/libstdc++-v3/include/std/array
+++ b/libstdc++-v3/include/std/array
@@ -55,8 +55,8 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  Sets support random access iterators.
    *
-   *  @param  Tp  Type of element. Required to be a complete type.
-   *  @param  N  Number of elements.
+   *  @tparam  Tp  Type of element. Required to be a complete type.
+   *  @tparam  N  Number of elements.
   */
   template<typename _Tp, std::size_t _Nm>
     struct array
diff --git a/libstdc++-v3/include/std/atomic b/libstdc++-v3/include/std/atomic
index 31673e9..6a08b28 100644
--- a/libstdc++-v3/include/std/atomic
+++ b/libstdc++-v3/include/std/atomic
@@ -1,6 +1,6 @@ 
 // -*- C++ -*- header.
 
-// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2008, 2009, 2010, 2011, 2012 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
@@ -148,8 +148,11 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
   };
 
 
-  /// atomic
-  /// 29.4.3, Generic atomic type, primary class template.
+  /**
+   *  @brief Generic atomic type, primary class template.
+   *
+   *  @tparam _Tp  Type to be made atomic, must be trivally copyable.
+   */
   template<typename _Tp>
     struct atomic
     {
diff --git a/libstdc++-v3/include/std/fstream b/libstdc++-v3/include/std/fstream
index b4a86a1..098b5b1 100644
--- a/libstdc++-v3/include/std/fstream
+++ b/libstdc++-v3/include/std/fstream
@@ -1,7 +1,7 @@ 
 // File based streams -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010, 2011
+// 2006, 2007, 2008, 2009, 2010, 2011, 2012
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -55,16 +55,21 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  The actual work of input and output (for files).
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  This class associates both its input and output sequence with an
    *  external disk file, and maintains a joint file position for both
    *  sequences.  Many of its semantics are described in terms of similar
    *  behavior in the Standard C Library's @c FILE streams.
+   *
+   *  Requirements on traits_type, specific to this class:
+   *  - traits_type::pos_type must be fpos<traits_type::state_type>
+   *  - traits_type::off_type must be streamoff
+   *  - traits_type::state_type must be Assignable and DefaultConstructible,
+   *  - traits_type::state_type() must be the initial state for codecvt.
    */
-  // Requirements on traits_type, specific to this class:
-  // traits_type::pos_type must be fpos<traits_type::state_type>
-  // traits_type::off_type must be streamoff
-  // traits_type::state_type must be Assignable and DefaultConstructible,
-  // and traits_type::state_type() must be the initial state for codecvt.
   template<typename _CharT, typename _Traits>
     class basic_filebuf : public basic_streambuf<_CharT, _Traits>
     {
@@ -411,6 +416,10 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Controlling input for files.
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  This class supports reading from named files, using the inherited
    *  functions from std::basic_istream.  To control the associated
    *  sequence, an instance of std::basic_filebuf is used, which this page
@@ -579,6 +588,10 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Controlling output for files.
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  This class supports reading from named files, using the inherited
    *  functions from std::basic_ostream.  To control the associated
    *  sequence, an instance of std::basic_filebuf is used, which this page
@@ -752,6 +765,10 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Controlling input and output for files.
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  This class supports reading from and writing to named files, using
    *  the inherited functions from std::basic_iostream.  To control the
    *  associated sequence, an instance of std::basic_filebuf is used, which
diff --git a/libstdc++-v3/include/std/istream b/libstdc++-v3/include/std/istream
index 57b2113..abc7120 100644
--- a/libstdc++-v3/include/std/istream
+++ b/libstdc++-v3/include/std/istream
@@ -1,7 +1,7 @@ 
 // Input streams -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010, 2011
+// 2006, 2007, 2008, 2009, 2010, 2011, 2012
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -48,6 +48,10 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Template class basic_istream.
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  This is the base class for all input streams.  It provides text
    *  formatting of all builtin types, and communicates with any class
    *  derived from basic_streambuf to do the actual input.
@@ -782,6 +786,10 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Template class basic_iostream
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  This class multiply inherits from the input and output stream classes
    *  simply to provide a single interface.
   */
diff --git a/libstdc++-v3/include/std/ostream b/libstdc++-v3/include/std/ostream
index 498a060..eb8b885 100644
--- a/libstdc++-v3/include/std/ostream
+++ b/libstdc++-v3/include/std/ostream
@@ -1,7 +1,7 @@ 
 // Output streams -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010, 2011
+// 2006, 2007, 2008, 2009, 2010, 2011, 2012
 // Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
@@ -48,6 +48,10 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Template class basic_ostream.
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  This is the base class for all output streams.  It provides text
    *  formatting of all builtin types, and communicates with any class
    *  derived from basic_streambuf to do the actual output.
diff --git a/libstdc++-v3/include/std/sstream b/libstdc++-v3/include/std/sstream
index d9889d7..6237853 100644
--- a/libstdc++-v3/include/std/sstream
+++ b/libstdc++-v3/include/std/sstream
@@ -1,7 +1,7 @@ 
 // String based streams -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+// 2006, 2008, 2009, 2010, 2011, 2012 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
@@ -48,6 +48,11 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  The actual work of input and output (for std::string).
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_CharT>.
+   *
    *  This class associates either or both of its input and output sequences
    *  with a sequence of characters, which can be initialized from, or made
    *  available as, a @c std::basic_string.  (Paraphrased from [27.7.1]/1.)
@@ -254,6 +259,11 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Controlling input for std::string.
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_CharT>.
+   *
    *  This class supports reading from objects of type std::basic_string,
    *  using the inherited functions from std::basic_istream.  To control
    *  the associated sequence, an instance of std::basic_stringbuf is used,
@@ -364,6 +374,11 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Controlling output for std::string.
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_CharT>.
+   *
    *  This class supports writing to objects of type std::basic_string,
    *  using the inherited functions from std::basic_ostream.  To control
    *  the associated sequence, an instance of std::basic_stringbuf is used,
@@ -474,6 +489,11 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  Controlling input and output for std::string.
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *  @tparam _Alloc  Allocator type, defaults to allocator<_CharT>.
+   *
    *  This class supports reading from and writing to objects of type
    *  std::basic_string, using the inherited functions from
    *  std::basic_iostream.  To control the associated sequence, an instance
diff --git a/libstdc++-v3/include/std/streambuf b/libstdc++-v3/include/std/streambuf
index 82a67da..9b1dc55 100644
--- a/libstdc++-v3/include/std/streambuf
+++ b/libstdc++-v3/include/std/streambuf
@@ -1,7 +1,7 @@ 
 // Stream buffer classes -*- C++ -*-
 
 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-// 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+// 2006, 2007, 2008, 2009, 2010, 2011, 2012 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
@@ -56,6 +56,10 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  @brief  The actual work of input and output (interface).
    *  @ingroup io
    *
+   *  @tparam _CharT  Type of character stream.
+   *  @tparam _Traits  Traits for character type, defaults to
+   *                   char_traits<_CharT>.
+   *
    *  This is a base class.  Derived stream buffers each control a
    *  pair of character sequences:  one for input, and one for output.
    *
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
index a86e946..b220df3 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1696 }
+// { dg-error "no matching" "" { target *-*-* } 1699 }
 
 #include <deque>
 
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
index da53d4f..94dd719 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1629 }
+// { dg-error "no matching" "" { target *-*-* } 1632 }
 
 #include <deque>
 
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
index 10ecf6e..5950b22 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1629 }
+// { dg-error "no matching" "" { target *-*-* } 1632 }
 
 #include <deque>
 #include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
index f77b9a7..1abfd7d 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1780 }
+// { dg-error "no matching" "" { target *-*-* } 1783 }
 
 #include <deque>
 
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
index 05664b9..65a6d41 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1568 }
+// { dg-error "no matching" "" { target *-*-* } 1571 }
 
 #include <list>
 
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
index 0ef8da8..34caa3b 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1524 }
+// { dg-error "no matching" "" { target *-*-* } 1527 }
 
 #include <list>
 
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
index f0836f6..d1709c3 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1524 }
+// { dg-error "no matching" "" { target *-*-* } 1527 }
 
 #include <list>
 #include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
index db63e39..2651f3b 100644
--- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1524 }
+// { dg-error "no matching" "" { target *-*-* } 1527 }
 
 #include <list>
 
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
index 644750c..320f4dd 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1233 }
+// { dg-error "no matching" "" { target *-*-* } 1236 }
 
 #include <vector>
 
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
index bbd4cfe..78a6ead 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1163 }
+// { dg-error "no matching" "" { target *-*-* } 1166 }
 
 #include <vector>
 
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
index d2282cc..af12c6d 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1163 }
+// { dg-error "no matching" "" { target *-*-* } 1166 }
 
 #include <vector>
 #include <utility>
diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
index d2cde66..da88180 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
@@ -18,7 +18,7 @@ 
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1274 }
+// { dg-error "no matching" "" { target *-*-* } 1277 }
 
 #include <vector>