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 {
  public:
    // [fpos.members], members
    stateT state() const;
    void state(stateT);
  private;
    stateT st; // exposition only
  };
}

30.5.4.1 fpos members [fpos.members]

void state(stateT s);
Effects: Assigns s to st.
stateT state() const;
Returns: Current value of st.

30.5.4.2 fpos requirements [fpos.operations]

Operations specified in Table 107 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 107 — Position type requirements
Expression
Return type
Operational
Assertion/note
semantics
pre-/post-condition
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)
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.