std::experimental::ostream_joiner::operator=(3)

NAME
std::experimental::ostream_joiner::operator= - std::experimental::ostream_joiner::operator=

Synopsis
   template< class T > (1) (library fundamentals TS v2)
   ostream_joiner& operator=( const T& value );
   ostream_joiner& operator=( const ostream_joiner& (2) (library fundamentals TS v2)
   other ) = default; (implicitly declared)
   ostream_joiner& operator=( ostream_joiner&& other ) (3) (library fundamentals TS v2)
   = default; (implicitly declared)
   1) First, if the private "first element" flag is false, insert the delimiter delim
   into the output stream os associated with this iterator as if by os << delim;.
   Then, unconditionally sets the "first element" flag to false, and insert value into
   the output stream as if by os << value;.
   Let out_stream, delim, and first_element denote the private stream pointer,
   delimiter, and "first element" flag members respectively. Then this function is
   equivalent to
 if (!first_element)
     *out_stream << delim;
 first_element = false;
 *out_stream << value;
 return *this;
   2,3) Implicitly declared copy/move assignment operator that copy/move assigns the
   private stream pointer, delimiter, and "first element" flag members.

Parameters
   value - the object to to be written to the stream
   other - the ostream_joiner object to be assigned to this object

Return value
   *this.

Example
// Run this code
 #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
 }

Output:
 First, do no harm.