[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 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)