std::experimental::ostream_joiner<DelimT,CharT,Traits>:: operator=
From cppreference.net
<
cpp
|
experimental
|
ostream joiner
|
template
<
class
T
>
ostream_joiner & operator = ( const T & value ) ; |
(1) | (техническая спецификация библиотеки fundamentals v2) |
|
ostream_joiner
&
operator
=
(
const
ostream_joiner
&
other
)
=
default
;
|
(2) |
(техническая спецификация библиотеки fundamentals v2)
(неявно объявлен) |
|
ostream_joiner
&
operator
=
(
ostream_joiner
&&
other
)
=
default
;
|
(3) |
(техническая спецификация библиотеки fundamentals v2)
(неявно объявлен) |
1)
Сначала, если приватный флаг "первый элемент" имеет значение
false
, вставьте разделитель
delim
в выходной поток
os
, связанный с этим итератором, как если бы было выполнено
os
<<
delim
;
.
Затем безусловно устанавливает флаг "первого элемента" в
false
и вставляет
value
в выходной поток как если бы с помощью
os
<<
value
;
.
Пусть
out_stream
,
delim
и
first_element
обозначают соответствующие приватные члены: указатель на поток, разделитель и флаг "первого элемента". Тогда эта функция эквивалентна
if (!first_element) *out_stream << delim; first_element = false; *out_stream << value; return *this;
2,3)
Неявно объявленный оператор копирующего/перемещающего присваивания, который копирует/перемещает присваивает закрытые члены: указатель потока, разделитель и флаг "первого элемента".
Параметры
| value | - | объект для записи в поток |
| other | - |
объект
ostream_joiner
для присваивания этому объекту
|
Возвращаемое значение
* this .
Пример
Запустить этот код
#include <experimental/iterator> #include <iostream> int main() { auto joiner = std::experimental::make_ostream_joiner(std::cout, ", "); joiner = "First"; joiner = "do no harm."; // prefixes with the delimiter }
Вывод:
First, do no harm.