[cmp.result] # 17 Language support library [[support]](./#support) ## 17.12 Comparisons [[cmp]](cmp#result) ### 17.12.5 Result of three-way comparison [cmp.result] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/support.tex#L5460) The behavior of a program that adds specializations for the compare_three_way_result template defined in this subclause is undefined[.](#1.sentence-1) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/support.tex#L5465) For the compare_three_way_result type trait applied to the types T and U, let t and u denote lvalues of typesconst remove_reference_t and const remove_reference_t, respectively[.](#2.sentence-1) If the expression t <=> u is well-formed when treated as an unevaluated operand ([[expr.context]](expr.context "7.2.3 Context dependence")), the member [*typedef-name*](dcl.typedef#nt:typedef-name "9.2.4 The typedef specifier [dcl.typedef]") type denotes the type decltype(t <=> u)[.](#2.sentence-2) Otherwise, there is no member type[.](#2.sentence-3)