|
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