30 Input/output library [input.output]

30.5 Iostreams base classes [iostreams.base]

30.5.4 Class template fpos [fpos]

namespace std {
  template <class stateT> class fpos {
    // [fpos.members], members
    stateT state() const;
    void state(stateT);
    stateT st; // exposition only
} fpos members [fpos.members]

void state(stateT s);

Effects: Assigns s to st.

stateT state() const;

Returns: Current value of st. fpos requirements [fpos.operations]

Operations specified in Table 112 are permitted. In that table,

  • P refers to an instance of fpos,

  • p and q refer to values of type P,

  • O refers to type streamoff,

  • o refers to a value of type streamoff,

  • sz refers to a value of type streamsize and

  • i refers to a value of type int.

Table 112 — Position type requirements
ExpressionReturn typeOperationalAssertion/note
P(i) p == P(i)
note: a destructor is assumed.
P p(i);
P p = i;
Postconditions: p == P(i).
P(o) fpos converts from offset
O(p) streamoff converts to offset P(O(p)) == p
p == q convertible to bool == is an equivalence relation
p != q convertible to bool !(p == q)
q = p + o
p += o
fpos + offset q - o == p
q = p - o
p -= o
fpos - offset q + o == p
o = p - q streamoff distance q + o == p
streamsize(O(sz)) == sz
streamsize(O(sz)) == sz

[Note: Every implementation is required to supply overloaded operators on fpos objects to satisfy the requirements of [fpos.operations]. It is unspecified whether these operators are members of fpos, global operators, or provided in some other way. end note]

Stream operations that return a value of type traits​::​pos_­type return P(O(-1)) as an invalid value to signal an error. If this value is used as an argument to any istream, ostream, or streambuf member that accepts a value of type traits​::​pos_­type then the behavior of that function is undefined.