This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++20 status.

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

Section: 29.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 29.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:
   >       […]
   >       // 29.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()) {}
   >       […]
   >     };