2494. [fund.ts.v2] ostream_joiner needs noexcept

Section: 10.2 [fund.ts.v2::iterator.ostream.joiner] Status: TS Submitter: Nate Wilson Opened: 2015-05-03 Last modified: 2017-07-30

Priority: 0

View all issues with TS status.

Discussion:

Addresses: fund.ts.v2

In Library Fundamentals 2 N4481, [iterator.ostream.joiner], all operations are no-ops other than the assignment operator.

So, they should be marked as noexcept.

[2015-05, Lenexa]

Move to Immediate.

Proposed resolution:

This wording is relative to N4481 in regard to fundamental-ts-2 changes.

  1. Change class template ostream_joiner synopsis, [iterator.ostream.joiner] p2, as indicated:

    namespace std {
    namespace experimental {
    inline namespace fundamentals_v2 {
    
    template <class DelimT, class charT = char, class traits = char_traits<charT> >
      class ostream_joiner {
      public:
        […]
        ostream_joiner<DelimT, charT,traits>& operator*() noexcept;
        ostream_joiner<DelimT, charT,traits>& operator++() noexcept;
        ostream_joiner<DelimT, charT,traits>& operator++(int) noexcept;
        […]
      };
    
    } // inline namespace fundamentals_v2
    } // namespace experimental
    } // namespace std
    
  2. Change [iterator.ostream.joiner.ops] p3+5, as indicated:

    ostream_joiner<DelimT, charT, traits>& operator*() noexcept;
    

    […]

    ostream_joiner<DelimT, charT, traits>& operator++() noexcept;
    ostream_joiner<DelimT, charT, traits>& operator++(int) noexcept;