Apply Howard's inheritance fixes

[SVN r1293]
This commit is contained in:
Dave Abrahams
2003-05-30 03:07:39 +00:00
parent 2e18357672
commit 1a58125e62

View File

@@ -622,27 +622,33 @@ pseudo-code.
:: ::
inherit-category(access-tag, traversal-tag) = inherit-category(access-tag, traversal-tag) =
if (access-tag is convertible to readable_lvalue_iterator_tag if (access-tag is convertible to readable_lvalue_iterator_tag) {
or access-tag is convertible to writable_lvalue_iterator_tag) { if (traversal-tag is convertible to random_access_traversal_tag)
if (traversal-tag is convertible to random_access_traversal_tag) return random_access_iterator_tag;
return random_access_iterator_tag; else if (traversal-tag is convertible to bidirectional_traversal_tag)
else if (traversal-tag is convertible to bidirectional_traversal_tag) return bidirectional_iterator_tag;
return bidirectional_iterator_tag; else if (traversal-tag is convertible to forward_traversal_tag)
else if (traversal-tag is convertible to forward_traversal_tag) return forward_iterator_tag;
return forward_iterator_tag; else if (traversal-tag is convertible to single_pass_traversal_tag)
else if (access-tag is convertible to writable_iterator_tag)
return null_category_tag; return input_output_iterator_tag;
} else if (access-tag is convertible to readable_writable_iterator_tag else
and traversal-tag is convertible to single_pass_iterator_tag) return input_iterator_tag;
return input_output_iterator_tag; else if (access-tag is convertible to writable_iterator_tag)
else if (access-tag is convertible to readable_iterator_tag return output_iterator_tag;
and traversal-tag is convertible to single_pass_iterator_tag) else
return input_iterator_tag; return null_category_tag;
else if (access-tag is convertible to writable_iterator_tag } else if (access-tag is convertible to readable_writable_iterator_tag
and traversal-tag is convertible to incrementable_iterator_tag) and traversal-tag is convertible to single_pass_iterator_tag)
return output_iterator_tag; return input_output_iterator_tag;
else else if (access-tag is convertible to readable_iterator_tag
return null_category_tag; and traversal-tag is convertible to single_pass_iterator_tag)
return input_iterator_tag;
else if (access-tag is convertible to writable_iterator_tag
and traversal-tag is convertible to incrementable_iterator_tag)
return output_iterator_tag;
else
return null_category_tag;
The ``access_category`` and ``traversal_category`` class templates are The ``access_category`` and ``traversal_category`` class templates are