[ostream.rvalue]

# 31 Input/output library [[input.output]](./#input.output)

## 31.7 Formatting and manipulators [[iostream.format]](iostream.format#ostream.rvalue)

### 31.7.6 Output streams [[output.streams]](output.streams#ostream.rvalue)

#### 31.7.6.6 Rvalue stream insertion [ostream.rvalue]

[ð](#lib:operator%3c%3c,basic_ostream)

`template<class Ostream, class T>
  Ostream&& operator<<(Ostream&& os, const T& x);
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L7174)

*Constraints*: The expression os << x is well-formed
when treated as an unevaluated operand andOstream is publicly and unambiguously derived from ios_base[.](#1.sentence-1)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L7180)

*Effects*: As if by: os << x;

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L7184)

*Returns*: std​::​move(os)[.](#3.sentence-1)
