Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Iterator Archetype

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Iterator Archetype

Author: Дэвид Абрахамс, Джереми Сик, Томас Витт
Contact: Типы категорий доступа соответствуют следующим стандартным комбинациям концепций доступа итератора:

readable_iterator_t :=
  Readable Iterator
writable_iterator_t :=
  Writeable Iterator
readable_writable_iterator_t :=
  Readable Iterator & Writeable Iterator & Swappable Iterator
readable_lvalue_iterator_t :=
  Readable Iterator & Lvalue Iterator
writeable_lvalue_iterator_t :=
  Readable Iterator & Writeable Iterator & Swappable Iterator & Lvalue Iterator

iterator_archetype Requirements

КлассификацияАргумент должен быть одним из заданных тегов категории доступа.Траверсальная категориядолжен быть одним из стандартных тегов обхода.ЦенностьТип должен удовлетворять требованиям концепции итератора, указаннымиТраверсалКатегориякак подразумеваемые вложенными типами черт.

iterator_archetype Models

итератор_архетипмоделирует понятия итератора, определенныеКатегория доступаиТраверсалКатегорияаргументы.iterator_archetypeне моделирует никаких других концепций доступа или более производных концепций обхода.

Traits

Типы вложенных признаков определяются следующим образом:

if (AccessCategory == readable_iterator_t)
  value_type = Value
  reference  = Value
  pointer    = Value*
else if (AccessCategory == writable_iterator_t)
  value_type = void
  reference  = void
  pointer    = void
else if (AccessCategory == readable_writable_iterator_t)
  value_type = Value
  reference :=
    A type X that is convertible to Value for which the following
    expression is valid. Given an object x of type X and v of type
    Value.
    x = v
  pointer    = Value*
else if (AccessCategory == readable_lvalue_iterator_t)
  value_type = Value
  reference  = Value const&
  pointer    = Value const*
else if (AccessCategory == writable_lvalue_iterator_t)
  value_type = Value
  reference  = Value&
  pointer    = Value*
if ( TraversalCategory is convertible to forward_traversal_tag )
  difference_type := ptrdiff_t
else
  difference_type := unspecified type
iterator_category :=
  A type X satisfying the following two constraints:
     1. X is convertible to X1, and not to any more-derived
        type, where X1 is defined by:
          if (reference is a reference type
              && TraversalCategory is convertible to forward_traversal_tag)
          {
              if (TraversalCategory is convertible to random_access_traversal_tag)
                  X1 = random_access_iterator_tag
              else if (TraversalCategory is convertible to bidirectional_traversal_tag)
                  X1 = bidirectional_iterator_tag
              else
                  X1 = forward_iterator_tag
          }
          else
          {
              if (TraversalCategory is convertible to single_pass_traversal_tag
                  && reference != void)
                  X1 = input_iterator_tag
              else
                  X1 = output_iterator_tag
          }
     2. X is convertible to TraversalCategory

Статья Iterator Archetype раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:29:54/0.0061938762664795/0