[concepts.compare.general] # 18 Concepts library [[concepts]](./#concepts) ## 18.5 Comparison concepts [[concepts.compare]](concepts.compare#general) ### 18.5.1 General [concepts.compare.general] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/concepts.tex#L843) Subclause [[concepts.compare]](concepts.compare "18.5 Comparison concepts") describes concepts that establish relationships and orderings on values of possibly differing object types[.](#1.sentence-1) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/concepts.tex#L847) Given an expression E and a type C, let *CONVERT_TO_LVALUE*(E) be: - [(2.1)](#2.1) static_cast(as_const(E)) if that is a valid expression, and - [(2.2)](#2.2) static_cast(std​::​move(E)) otherwise[.](#2.sentence-1)