3253. basic_syncbuf::basic_syncbuf() should not be explicit

Section: 31.11.2.1 [syncstream.syncbuf.overview] Status: C++20 Submitter: Nevin Liber Opened: 2019-08-06 Last modified: 2021-02-25

Priority: 0

View all other issues in [syncstream.syncbuf.overview].

View all issues with C++20 status.

Discussion:

When P0935 "Eradicating unnecessarily explicit default constructors from the standard library" was applied, basic_syncbuf was not in the working paper. basic_syncbuf should not have an explicit default constructor.

[2019-09-02 Issue Prioritization]

Status to Tentatively Ready and priority to 0 after seven positive votes on the reflector.

Proposed resolution:

This wording is relative to N4830.

  1. Modify 31.11.2.1 [syncstream.syncbuf.overview], class template basic_syncbuf synopsis, as indicated:

    template<class charT, class traits, class Allocator>
    class basic_syncbuf : public basic_streambuf<charT, traits> {
    public:
      […]
      // 31.11.2.2 [syncstream.syncbuf.cons], construction and destruction
      basic_syncbuf()
        : basic_syncbuf(nullptr) {}
      explicit basic_syncbuf(streambuf_type* obuf = nullptr)
        : basic_syncbuf(obuf, Allocator()) {}
      […]
    };