|
44 | 44 |
|
45 | 45 | // buffer sequence access:
|
46 | 46 |
|
47 |
| - const mutable_buffer* buffer_sequence_begin(const mutable_buffer& b); |
48 |
| - const const_buffer* buffer_sequence_begin(const const_buffer& b); |
49 |
| - const mutable_buffer* buffer_sequence_end(const mutable_buffer& b); |
50 |
| - const const_buffer* buffer_sequence_end(const const_buffer& b); |
51 |
| - template<class C> auto buffer_sequence_begin(C& c) -> decltype(c.begin()); |
52 |
| - template<class C> auto buffer_sequence_begin(const C& c) -> decltype(c.begin()); |
53 |
| - template<class C> auto buffer_sequence_end(C& c) -> decltype(c.end()); |
54 |
| - template<class C> auto buffer_sequence_end(const C& c) -> decltype(c.end()); |
| 47 | + const mutable_buffer* buffer_sequence_begin(const mutable_buffer& b) noexcept; |
| 48 | + const const_buffer* buffer_sequence_begin(const const_buffer& b) noexcept; |
| 49 | + const mutable_buffer* buffer_sequence_end(const mutable_buffer& b) noexcept; |
| 50 | + const const_buffer* buffer_sequence_end(const const_buffer& b) noexcept; |
| 51 | + template<class C> auto buffer_sequence_begin(C& c) noexcept -> decltype(c.begin()); |
| 52 | + template<class C> auto buffer_sequence_begin(const C& c) noexcept -> decltype(c.begin()); |
| 53 | + template<class C> auto buffer_sequence_end(C& c) noexcept -> decltype(c.end()); |
| 54 | + template<class C> auto buffer_sequence_end(const C& c) noexcept -> decltype(c.end()); |
55 | 55 |
|
56 | 56 | // buffer size:
|
57 | 57 |
|
|
344 | 344 |
|
345 | 345 | \tcode{net::buffer_sequence_begin(x)}\br
|
346 | 346 | \tcode{net::buffer_sequence_end(x)} &
|
347 |
| -An iterator type meeting the requirements for bidirectional iterators (\CppXref{bidirectional.iterators}) whose value type is convertible to \tcode{mutable_buffer}. & |
| 347 | +An iterator type meeting the requirements for bidirectional iterators (\CppXref{bidirectional.iterators}) whose reference type is convertible to \tcode{mutable_buffer}. & |
| 348 | +For a dereferenceable iterator, no increment, decrement, or dereference operation, or conversion of the reference type to \tcode{mutable_buffer}, shall exit via an exception. |
348 | 349 | \\ \rowsep
|
349 | 350 |
|
350 | 351 | \tcode{X u(x);}
|
|
407 | 408 |
|
408 | 409 | \tcode{net::buffer_sequence_begin(x)}\br
|
409 | 410 | \tcode{net::buffer_sequence_end(x)} &
|
410 |
| -An iterator type meeting the requirements for bidirectional iterators (\CppXref{bidirectional.iterators}) whose value type is convertible to \tcode{const_buffer}. & |
| 411 | +An iterator type meeting the requirements for bidirectional iterators (\CppXref{bidirectional.iterators}) whose reference type is convertible to \tcode{const_buffer}. & |
| 412 | +For a dereferenceable iterator, no increment, decrement, or dereference operation, or conversion of the reference type to \tcode{const_buffer}, shall exit via an exception. |
411 | 413 | \\ \rowsep
|
412 | 414 |
|
413 | 415 | \tcode{X u(x);}
|
|
828 | 830 |
|
829 | 831 | \indexlibrary{\idxcode{buffer_sequence_begin}}%
|
830 | 832 | \begin{itemdecl}
|
831 |
| -const mutable_buffer* buffer_sequence_begin(const mutable_buffer& b); |
832 |
| -const const_buffer* buffer_sequence_begin(const const_buffer& b); |
| 833 | +const mutable_buffer* buffer_sequence_begin(const mutable_buffer& b) noexcept; |
| 834 | +const const_buffer* buffer_sequence_begin(const const_buffer& b) noexcept; |
833 | 835 | \end{itemdecl}
|
834 | 836 |
|
835 | 837 | \begin{itemdescr}
|
|
839 | 841 |
|
840 | 842 | \indexlibrary{\idxcode{buffer_sequence_end}}%
|
841 | 843 | \begin{itemdecl}
|
842 |
| -const mutable_buffer* buffer_sequence_end(const mutable_buffer& b); |
843 |
| -const const_buffer* buffer_sequence_end(const const_buffer& b); |
| 844 | +const mutable_buffer* buffer_sequence_end(const mutable_buffer& b) noexcept; |
| 845 | +const const_buffer* buffer_sequence_end(const const_buffer& b) noexcept; |
844 | 846 | \end{itemdecl}
|
845 | 847 |
|
846 | 848 | \begin{itemdescr}
|
|
850 | 852 |
|
851 | 853 | \indexlibrary{\idxcode{buffer_sequence_begin}}%
|
852 | 854 | \begin{itemdecl}
|
853 |
| -template<class C> auto buffer_sequence_begin(C& c) -> decltype(c.begin()); |
854 |
| -template<class C> auto buffer_sequence_begin(const C& c) -> decltype(c.begin()); |
| 855 | +template<class C> auto buffer_sequence_begin(C& c) noexcept -> decltype(c.begin()); |
| 856 | +template<class C> auto buffer_sequence_begin(const C& c) noexcept -> decltype(c.begin()); |
855 | 857 | \end{itemdecl}
|
856 | 858 |
|
857 | 859 | \begin{itemdescr}
|
|
861 | 863 |
|
862 | 864 | \indexlibrary{\idxcode{buffer_sequence_end}}%
|
863 | 865 | \begin{itemdecl}
|
864 |
| -template<class C> auto buffer_sequence_end(C& c) -> decltype(c.end()); |
865 |
| -template<class C> auto buffer_sequence_end(const C& c) -> decltype(c.end()); |
| 866 | +template<class C> auto buffer_sequence_end(C& c) noexcept -> decltype(c.end()); |
| 867 | +template<class C> auto buffer_sequence_end(const C& c) noexcept -> decltype(c.end()); |
866 | 868 | \end{itemdecl}
|
867 | 869 |
|
868 | 870 | \begin{itemdescr}
|
|
0 commit comments