operator<<,>>(std::subtract_with_carry_engine)

From cppreference.com

template < class CharT, class Traits >

friend std::basic_ostream <CharT, Traits> &
    operator<< ( std::basic_ostream <CharT, Traits> & os,

const subtract_with_carry_engine& e ) ;
(1) (since C++11)
template < class CharT, class Traits >

friend std::basic_istream <CharT, Traits> &
    operator>> ( std::basic_istream <CharT, Traits> & is,

                subtract_with_carry_engine& e ) ;
(2) (since C++11)
1) Writes the textual representation of the current state of e to os with fmtflags set to std::ios_base::dec | std::ios_base::left
After writing, os's original fmtflags and fill character are restored.
2) Reads a textual representation of engine state from is (denoted as text) with fmtflags set to std::ios_base::dec , and sets the state of e
After reading, is's original fmtflags is restored.
  • If text was not previously written using an output stream pr, the behavior is undefined.
  • Otherwise, if any of the following values is false, the behavior is undefined:
  • is.getloc() == pr.getloc()
  • std::is_same <decltype(is) :: char_type
    decltype(pr) :: char_type > :: value
  • std::is_same <decltype(is) :: traits_type
    decltype(pr) :: traits_type > :: value
  • Otherwise, if text is not a valid textual representation of any state of decltype(e), the state of e is unchanged and is.setstate ( std::ios_base::failbit )
  • Otherwise, given another engine eng of the same type as e. If text was previously written by pr << eng and there is no intervening invocations of e or of eng between pr << eng and is >> e, e == eng is true

These function templates are not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when decltype(e)

Parameters

os - output stream to insert the data to
is - input stream to extract the data from
e - pseudo-random number engine

Return value

1) os
2) is

Complexity

1,2) O(r).

Exceptions

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 3519 C++11 the form of insertion and extraction operators were unspecified specified to be hidden friends