Title
[networking.ts] Buffer sequence iterator equivalency
Status
nad
Section
[buffer.reqmts]
Submitter
Vinnie Falco

Created on 2018-10-07.00:00:00 last changed 65 months ago

Messages

Date: 2018-10-13.16:52:47

Proposed resolution:

This wording is relative to the N4734.

  1. Modify [buffer.reqmts.mutablebuffersequence], Table 12 "MutableBufferSequence requirements", as indicated:

    Table 12 — MutableBufferSequence requirements
    expression return type assertion/note
    pre/post-condition
    net::buffer_sequence_begin(x)
    net::buffer_sequence_end(x)
    An iterator type whose reference type
    is convertible to mutable_buffer and which
    satisfies all the requirements for bidirectional
    iterators (C++ 2014 [bidirectional.iterators]) except that:
    1. there is no requirement that operator-> is provided, and
    2. there is no requirement that reference
      be a reference type., and
    3. for iterators a and b
      there is no requirement that a == b if and
      only if *a and *b are bound to the
      same object, and
    4. a == b if and only if
      distance(buffer_sequence_begin(x), a) == distance(buffer_sequence_begin(x), b)
    […]
  2. Modify [buffer.reqmts.constbuffersequence], Table 13 "ConstBufferSequence requirements", as indicated:

    Table 13 — ConstBufferSequence requirements
    expression return type assertion/note
    pre/post-condition
    net::buffer_sequence_begin(x)
    net::buffer_sequence_end(x)
    An iterator type whose reference type is convertible to
    const_buffer and which satisfies all the requirements for
    bidirectional iterators (C++ 2014 [bidirectional.iterators]) except that:
    1. there is no requirement that operator-> is provided, and
    2. there is no requirement that reference be a reference
      type., and
    3. for iterators a and b there is no
      requirement that a == b if and only if *a and
      *b are bound to the same object, and
    4. a == b if and only if
      distance(buffer_sequence_begin(x), a) == distance(buffer_sequence_begin(x), b)
    […]
Date: 2018-11-27.04:34:19
Addresses: networking.ts

Buffer sequence iterators in [networking.ts] differ from the current standard iterator requirements in that the value returned upon dereferencing is not required to be a reference type. This change is vital for allowing authors to create useful, lazily-evaluated views which meet the requirements of buffer sequences. Unfortunately the updated language is incompatible with the standard iterator requirements for equality testing, because the addresses of value types returned by buffer sequence iterators may not be stable. The change proposed in this defect report defines a new metric for buffer sequence iterator equality.

11-2018 Status to NAD after discussion on the reflector.

History
Date User Action Args
2018-11-27 04:34:19adminsetstatus: new -> nad
2018-10-13 16:52:47adminsetmessages: + msg10163
2018-10-07 00:00:00admincreate