31
Input/output library
[input.output]
31.9
Span-based streams
[span.streams]
31.9.3
Class template
basic_
spanbuf
[spanbuf]
31.9.3.1
General
[spanbuf.general]
🔗
namespace
std
{
template
<
class
charT,
class
traits
=
char_traits
<
charT
>
>
class
basic_spanbuf
:
public
basic_streambuf
<
charT, traits
>
{
public
:
using
char_type
=
charT;
using
int_type
=
typename
traits
::
int_type;
using
pos_type
=
typename
traits
::
pos_type;
using
off_type
=
typename
traits
::
off_type;
using
traits_type
=
traits;
//
[spanbuf.
cons]
, constructors
basic_spanbuf
(
)
:
basic_spanbuf
(
ios_base
::
in
|
ios_base
::
out
)
{
}
explicit
basic_spanbuf
(
ios_base
::
openmode which
)
:
basic_spanbuf
(
std
::
span
<
charT
>
(
)
, which
)
{
}
explicit
basic_spanbuf
(
std
::
span
<
charT
>
s, ios_base
::
openmode which
=
ios_base
::
in
|
ios_base
::
out
)
; basic_spanbuf
(
const
basic_spanbuf
&
)
=
delete
; basic_spanbuf
(
basic_spanbuf
&
&
rhs
)
;
//
[spanbuf.
assign]
, assignment and swap
basic_spanbuf
&
operator
=
(
const
basic_spanbuf
&
)
=
delete
; basic_spanbuf
&
operator
=
(
basic_spanbuf
&
&
rhs
)
;
void
swap
(
basic_spanbuf
&
rhs
)
;
//
[spanbuf.
members]
, member functions
std
::
span
<
charT
>
span
(
)
const
noexcept
;
void
span
(
std
::
span
<
charT
>
s
)
noexcept
;
protected
:
//
[spanbuf.
virtuals]
, overridden virtual functions
basic_streambuf
<
charT, traits
>
*
setbuf
(
charT
*
, streamsize
)
override
; pos_type seekoff
(
off_type off, ios_base
::
seekdir way, ios_base
::
openmode which
=
ios_base
::
in
|
ios_base
::
out
)
override
; pos_type seekpos
(
pos_type sp, ios_base
::
openmode which
=
ios_base
::
in
|
ios_base
::
out
)
override
;
private
:
ios_base
::
openmode
mode
;
//
exposition only
std
::
span
<
charT
>
buf
;
//
exposition only
}
;
}
1
#
The class template
basic_
spanbuf
is derived from
basic_
streambuf
to associate possibly the input sequence and possibly the output sequence with a sequence of arbitrary characters
.
The sequence is provided by an object of class
span
<
charT
>
.
2
#
For the sake of exposition, the maintained data is presented here as:
(2.1)
ios_
base
::
openmode
mode
, has
in
set if the input sequence can be read, and
out
set if the output sequence can be written
.
(2.2)
std
::
span
<
charT
>
buf
is the view to the underlying character sequence
.