27 Input/output library [input.output]

27.5 Iostreams base classes [iostreams.base]

27.5.4 Class template fpos [fpos]

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

27.5.4.1 fpos members [fpos.members]

void state(stateT s);

Effects: Assign s to st.

stateT state() const;

Returns: Current value of st.

27.5.4.2 fpos requirements [fpos.operations]

Operations specified in Table [tab:iostreams.position.requirements] 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 127 — Position type requirements
ExpressionReturn typeOperationalAssertion/note
semanticspre-/post-condition
P(i) p == P(i)
note: a destructor is assumed.
P p(i);
P p = i;
post: 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)
O(sz)
streamsize
streamoff
converts
converts
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.