From 1a58125e6220d7524020f0296cb73d455402df1c Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Fri, 30 May 2003 03:07:39 +0000 Subject: [PATCH] Apply Howard's inheritance fixes [SVN r1293] --- doc/new-iter-concepts.rst | 48 ++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/doc/new-iter-concepts.rst b/doc/new-iter-concepts.rst index 50b7307..cd29dbe 100644 --- a/doc/new-iter-concepts.rst +++ b/doc/new-iter-concepts.rst @@ -622,27 +622,33 @@ pseudo-code. :: inherit-category(access-tag, traversal-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) - return random_access_iterator_tag; - else if (traversal-tag is convertible to bidirectional_traversal_tag) - return bidirectional_iterator_tag; - else if (traversal-tag is convertible to forward_traversal_tag) - return forward_iterator_tag; - else - return null_category_tag; - } else if (access-tag is convertible to readable_writable_iterator_tag - and traversal-tag is convertible to single_pass_iterator_tag) - return input_output_iterator_tag; - else if (access-tag is convertible to readable_iterator_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; + if (access-tag is convertible to readable_lvalue_iterator_tag) { + if (traversal-tag is convertible to random_access_traversal_tag) + return random_access_iterator_tag; + else if (traversal-tag is convertible to bidirectional_traversal_tag) + return bidirectional_iterator_tag; + else if (traversal-tag is convertible to forward_traversal_tag) + return forward_iterator_tag; + else if (traversal-tag is convertible to single_pass_traversal_tag) + if (access-tag is convertible to writable_iterator_tag) + return input_output_iterator_tag; + else + return input_iterator_tag; + else if (access-tag is convertible to writable_iterator_tag) + return output_iterator_tag; + else + return null_category_tag; + } else if (access-tag is convertible to readable_writable_iterator_tag + and traversal-tag is convertible to single_pass_iterator_tag) + return input_output_iterator_tag; + else if (access-tag is convertible to readable_iterator_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