home | help
std::basic_...asic_istream(3)  C++ Standard Libary std::basic_...asic_istream(3)

NAME
     std::basic_istream::basic_istream - std::basic_istream::basic_istream

Synopsis
	explicit basic_istream( std::basic_streambuf<CharT, Traits>* sb ); (1)
	protected:							     (2)
     (since C++11)
	basic_istream( const basic_istream& rhs ) = delete;
	protected:							     (3)
     (since C++11)
	basic_istream( basic_istream&& rhs );

	1)  Constructs the basic_istream object, assigning initial values to the
     base class
	by calling basic_ios::init(sb). The value of gcount() is initialized  to
     zero.

	2)  The copy constructor is protected, and is deleted. Input streams are
     not
	copyable.

	3) The move constructor copies the value of gcount() from rhs, sets  the
     gcount()
	value  of  rhs	to zero, and uses basic_ios<CharT, Traits>::move(rhs) to
     move all
	basic_ios members, except for the rdbuf(), from  rhs  into  *this.  This
     move
	constructor  is protected: it is called by the move constructors of mov-
     able input
	stream classes std::basic_ifstream and	std::basic_istringstream,  which
     know how to
	correctly move the associated stream buffer.

Parameters
	sb - streambuffer to use as underlying device

Example
     // Run this code

      #include <iostream>
      #include <sstream>

      int main()
      {
	  std::istringstream s1("hello");
	  std::istream s2(s1.rdbuf()); // OK: s2 shares the buffer with s1

      //   std::istream s3(std::istringstream("test")); // ERROR: move construc-
     tor is protected
      //  std::istream s4(s2);			       // ERROR: copy  construc-
     tor is deleted
	  std::istringstream  s5(std::istringstream("world"));	// OK: move ctor
     called
							      //     by  derived
     class

	  std::cout << s2.rdbuf() << ' ' << s5.rdbuf() << '\n';
      }

Output:
      hello world

http://cppreference.com 	   2024.06.10	   std::basic_...asic_istream(3)

home | help