Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r79879 - trunk/libs/unordered/doc
From: dnljms_at_[hidden]
Date: 2012-08-05 14:26:02


Author: danieljames
Date: 2012-08-05 14:26:02 EDT (Sun, 05 Aug 2012)
New Revision: 79879
URL: http://svn.boost.org/trac/boost/changeset/79879

Log:
Unordered: Document more fine grained requirements.
Text files modified:
   trunk/libs/unordered/doc/ref.php | 48 ++++++++++
   trunk/libs/unordered/doc/ref.xml | 168 ++++++++++++++++++++++++++++++++++++++-
   2 files changed, 207 insertions(+), 9 deletions(-)

Modified: trunk/libs/unordered/doc/ref.php
==============================================================================
--- trunk/libs/unordered/doc/ref.php (original)
+++ trunk/libs/unordered/doc/ref.php 2012-08-05 14:26:02 EDT (Sun, 05 Aug 2012)
@@ -67,14 +67,20 @@
 <?php if ($map): ?>
                     <row>
                       <entry><emphasis>Key</emphasis></entry>
- <entry>Key must be Assignable and CopyConstructible.</entry></row>
+ <entry><code>Key</code> must be <code>Erasable</code> from the container
+ (i.e. <code>allocator_traits</code> can <code>destroy</code> it).
+ </entry></row>
                     <row>
                       <entry><emphasis>Mapped</emphasis></entry>
- <entry>Mapped must be CopyConstructible</entry></row>
+ <entry><code>Mapped</code> must be <code>Erasable</code> from the container
+ (i.e. <code>allocator_traits</code> can <code>destroy</code> it).
+ </entry></row>
 <?php else: ?>
                     <row>
                       <entry><emphasis>Value</emphasis></entry>
- <entry>Value must be Assignable and CopyConstructible</entry></row>
+ <entry><code>Value</code> must be <code>Erasable</code> from the container
+ (i.e. <code>allocator_traits</code> can <code>destroy</code> it).
+ </entry></row>
 <?php endif ?>
                     <row>
                       <entry><emphasis>Hash</emphasis></entry>
@@ -206,6 +212,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <template>
@@ -237,6 +248,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0 and inserts the elements from [f, l) into it.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <parameter>
@@ -408,6 +424,11 @@
                     ' if and only if there is no element in the container with an equivalent '.$key_name. '.';
                 ?></para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
 <?php if ($equivalent_keys): ?>
                 <para>An iterator pointing to the inserted element.</para>
@@ -453,6 +474,11 @@
                 ?></para>
                 <para><code>hint</code> is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
 <?php if ($equivalent_keys): ?>
                 <para>An iterator pointing to the inserted element.</para>
@@ -490,6 +516,9 @@
                     ' if and only if there is no element in the container with an equivalent '.$key_name. '.';
                 ?></para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
 <?php if ($equivalent_keys): ?>
                 <para>An iterator pointing to the inserted element.</para>
@@ -517,6 +546,9 @@
                     ' if and only if there is no element in the container with an equivalent '.$key_name. '.';
                 ?></para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
 <?php if ($equivalent_keys): ?>
                 <para>An iterator pointing to the inserted element.</para>
@@ -549,6 +581,9 @@
 <?php endif; ?>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
 <?php if ($equivalent_keys): ?>
                 <para>An iterator pointing to the inserted element.</para>
@@ -581,6 +616,9 @@
 <?php endif; ?>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
 <?php if ($equivalent_keys): ?>
                 <para>An iterator pointing to the inserted element.</para>
@@ -612,6 +650,10 @@
               <description>
                 <para>Inserts a range of elements into the container. Elements are inserted if and only if there is no element in the container with an equivalent <?php echo $key_name; ?>.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>*first</code>.</para>
+ </requires>
               <throws>
                 <para>When inserting a single element, if an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
               </throws>

Modified: trunk/libs/unordered/doc/ref.xml
==============================================================================
--- trunk/libs/unordered/doc/ref.xml (original)
+++ trunk/libs/unordered/doc/ref.xml 2012-08-05 14:26:02 EDT (Sun, 05 Aug 2012)
@@ -29,7 +29,9 @@
                   <tbody>
                     <row>
                       <entry><emphasis>Value</emphasis></entry>
- <entry>Value must be Assignable and CopyConstructible</entry></row>
+ <entry><code>Value</code> must be <code>Erasable</code> from the container
+ (i.e. <code>allocator_traits</code> can <code>destroy</code> it).
+ </entry></row>
                     <row>
                       <entry><emphasis>Hash</emphasis></entry>
                       <entry>A unary function object type that acts a hash function for a <code>Value</code>. It takes a single argument of type <code>Value</code> and returns a value of type std::size_t.</entry></row>
@@ -151,6 +153,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <template>
@@ -182,6 +189,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0 and inserts the elements from [f, l) into it.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <parameter>
@@ -350,6 +362,11 @@
               <description>
                 <para>Inserts an object, constructed with the arguments <code>args</code>, in the container if and only if there is no element in the container with an equivalent value.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
                 <para>The bool component of the return type is true if an insert took place.</para>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
@@ -388,6 +405,11 @@
                 <para>Inserts an object, constructed with the arguments <code>args</code>, in the container if and only if there is no element in the container with an equivalent value.</para>
                 <para><code>hint</code> is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
               </returns>
@@ -418,6 +440,9 @@
               <description>
                 <para>Inserts <code>obj</code> in the container if and only if there is no element in the container with an equivalent value.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>The bool component of the return type is true if an insert took place.</para>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
@@ -438,6 +463,9 @@
               <description>
                 <para>Inserts <code>obj</code> in the container if and only if there is no element in the container with an equivalent value.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>The bool component of the return type is true if an insert took place.</para>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
@@ -462,6 +490,9 @@
                 <para>Inserts <code>obj</code> in the container if and only if there is no element in the container with an equivalent value.</para>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
               </returns>
@@ -486,6 +517,9 @@
                 <para>Inserts <code>obj</code> in the container if and only if there is no element in the container with an equivalent value.</para>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent value.</para>
               </returns>
@@ -513,6 +547,10 @@
               <description>
                 <para>Inserts a range of elements into the container. Elements are inserted if and only if there is no element in the container with an equivalent value.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>*first</code>.</para>
+ </requires>
               <throws>
                 <para>When inserting a single element, if an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
               </throws>
@@ -1038,7 +1076,9 @@
                   <tbody>
                     <row>
                       <entry><emphasis>Value</emphasis></entry>
- <entry>Value must be Assignable and CopyConstructible</entry></row>
+ <entry><code>Value</code> must be <code>Erasable</code> from the container
+ (i.e. <code>allocator_traits</code> can <code>destroy</code> it).
+ </entry></row>
                     <row>
                       <entry><emphasis>Hash</emphasis></entry>
                       <entry>A unary function object type that acts a hash function for a <code>Value</code>. It takes a single argument of type <code>Value</code> and returns a value of type std::size_t.</entry></row>
@@ -1160,6 +1200,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <template>
@@ -1191,6 +1236,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0 and inserts the elements from [f, l) into it.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <parameter>
@@ -1359,6 +1409,11 @@
               <description>
                 <para>Inserts an object, constructed with the arguments <code>args</code>, in the container.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -1396,6 +1451,11 @@
                 <para>Inserts an object, constructed with the arguments <code>args</code>, in the container.</para>
                 <para><code>hint</code> is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -1426,6 +1486,9 @@
               <description>
                 <para>Inserts <code>obj</code> in the container.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -1445,6 +1508,9 @@
               <description>
                 <para>Inserts <code>obj</code> in the container.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -1468,6 +1534,9 @@
                 <para>Inserts <code>obj</code> in the container.</para>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -1492,6 +1561,9 @@
                 <para>Inserts <code>obj</code> in the container.</para>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -1519,6 +1591,10 @@
               <description>
                 <para>Inserts a range of elements into the container. Elements are inserted if and only if there is no element in the container with an equivalent value.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>*first</code>.</para>
+ </requires>
               <throws>
                 <para>When inserting a single element, if an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
               </throws>
@@ -2050,10 +2126,14 @@
                   <tbody>
                     <row>
                       <entry><emphasis>Key</emphasis></entry>
- <entry>Key must be Assignable and CopyConstructible.</entry></row>
+ <entry><code>Key</code> must be <code>Erasable</code> from the container
+ (i.e. <code>allocator_traits</code> can <code>destroy</code> it).
+ </entry></row>
                     <row>
                       <entry><emphasis>Mapped</emphasis></entry>
- <entry>Mapped must be CopyConstructible</entry></row>
+ <entry><code>Mapped</code> must be <code>Erasable</code> from the container
+ (i.e. <code>allocator_traits</code> can <code>destroy</code> it).
+ </entry></row>
                     <row>
                       <entry><emphasis>Hash</emphasis></entry>
                       <entry>A unary function object type that acts a hash function for a <code>Key</code>. It takes a single argument of type <code>Key</code> and returns a value of type std::size_t.</entry></row>
@@ -2178,6 +2258,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <template>
@@ -2209,6 +2294,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0 and inserts the elements from [f, l) into it.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <parameter>
@@ -2377,6 +2467,11 @@
               <description>
                 <para>Inserts an object, constructed with the arguments <code>args</code>, in the container if and only if there is no element in the container with an equivalent key.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
                 <para>The bool component of the return type is true if an insert took place.</para>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.</para>
@@ -2415,6 +2510,11 @@
                 <para>Inserts an object, constructed with the arguments <code>args</code>, in the container if and only if there is no element in the container with an equivalent key.</para>
                 <para><code>hint</code> is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.</para>
               </returns>
@@ -2445,6 +2545,9 @@
               <description>
                 <para>Inserts <code>obj</code> in the container if and only if there is no element in the container with an equivalent key.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>The bool component of the return type is true if an insert took place.</para>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.</para>
@@ -2465,6 +2568,9 @@
               <description>
                 <para>Inserts <code>obj</code> in the container if and only if there is no element in the container with an equivalent key.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>The bool component of the return type is true if an insert took place.</para>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.</para>
@@ -2489,6 +2595,9 @@
                 <para>Inserts <code>obj</code> in the container if and only if there is no element in the container with an equivalent key.</para>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.</para>
               </returns>
@@ -2513,6 +2622,9 @@
                 <para>Inserts <code>obj</code> in the container if and only if there is no element in the container with an equivalent key.</para>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key.</para>
               </returns>
@@ -2540,6 +2652,10 @@
               <description>
                 <para>Inserts a range of elements into the container. Elements are inserted if and only if there is no element in the container with an equivalent key.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>*first</code>.</para>
+ </requires>
               <throws>
                 <para>When inserting a single element, if an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
               </throws>
@@ -3104,10 +3220,14 @@
                   <tbody>
                     <row>
                       <entry><emphasis>Key</emphasis></entry>
- <entry>Key must be Assignable and CopyConstructible.</entry></row>
+ <entry><code>Key</code> must be <code>Erasable</code> from the container
+ (i.e. <code>allocator_traits</code> can <code>destroy</code> it).
+ </entry></row>
                     <row>
                       <entry><emphasis>Mapped</emphasis></entry>
- <entry>Mapped must be CopyConstructible</entry></row>
+ <entry><code>Mapped</code> must be <code>Erasable</code> from the container
+ (i.e. <code>allocator_traits</code> can <code>destroy</code> it).
+ </entry></row>
                     <row>
                       <entry><emphasis>Hash</emphasis></entry>
                       <entry>A unary function object type that acts a hash function for a <code>Key</code>. It takes a single argument of type <code>Key</code> and returns a value of type std::size_t.</entry></row>
@@ -3232,6 +3352,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <template>
@@ -3263,6 +3388,11 @@
             <description>
               <para>Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0 and inserts the elements from [f, l) into it.</para>
             </description>
+ <requires>
+ <para>If the defaults are used, <code>hasher</code>, <code>key_equal</code> and
+ <code>allocator_type</code> need to be <code>DefaultConstructible</code>.
+ </para>
+ </requires>
           </constructor>
           <constructor>
             <parameter>
@@ -3431,6 +3561,11 @@
               <description>
                 <para>Inserts an object, constructed with the arguments <code>args</code>, in the container.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -3468,6 +3603,11 @@
                 <para>Inserts an object, constructed with the arguments <code>args</code>, in the container.</para>
                 <para><code>hint</code> is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>args</code>.
+ </para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -3498,6 +3638,9 @@
               <description>
                 <para>Inserts <code>obj</code> in the container.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -3517,6 +3660,9 @@
               <description>
                 <para>Inserts <code>obj</code> in the container.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -3540,6 +3686,9 @@
                 <para>Inserts <code>obj</code> in the container.</para>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>CopyInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -3564,6 +3713,9 @@
                 <para>Inserts <code>obj</code> in the container.</para>
                 <para>hint is a suggestion to where the element should be inserted.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>MoveInsertable</code>.</para>
+ </requires>
               <returns>
                 <para>An iterator pointing to the inserted element.</para>
               </returns>
@@ -3591,6 +3743,10 @@
               <description>
                 <para>Inserts a range of elements into the container. Elements are inserted if and only if there is no element in the container with an equivalent key.</para>
               </description>
+ <requires>
+ <para><code>value_type</code> is <code>EmplaceConstructible</code> into
+ <code>X</code> from <code>*first</code>.</para>
+ </requires>
               <throws>
                 <para>When inserting a single element, if an exception is thrown by an operation other than a call to <code>hasher</code> the function has no effect.</para>
               </throws>


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk