15a83710eSEric Fiselier //===----------------------------------------------------------------------===// 25a83710eSEric Fiselier // 35a83710eSEric Fiselier // The LLVM Compiler Infrastructure 45a83710eSEric Fiselier // 55a83710eSEric Fiselier // This file is dual licensed under the MIT and the University of Illinois Open 65a83710eSEric Fiselier // Source Licenses. See LICENSE.TXT for details. 75a83710eSEric Fiselier // 85a83710eSEric Fiselier //===----------------------------------------------------------------------===// 95a83710eSEric Fiselier 105a83710eSEric Fiselier // <functional> 115a83710eSEric Fiselier 125a83710eSEric Fiselier // less_equal 135a83710eSEric Fiselier 145a83710eSEric Fiselier #include <functional> 155a83710eSEric Fiselier #include <type_traits> 165a83710eSEric Fiselier #include <cassert> 175a83710eSEric Fiselier 18*d697ee41SEric Fiselier #include "test_macros.h" 19*d697ee41SEric Fiselier #include "pointer_comparison_test_helper.hpp" 20*d697ee41SEric Fiselier 215a83710eSEric Fiselier int main() 225a83710eSEric Fiselier { 235a83710eSEric Fiselier typedef std::less_equal<int> F; 245a83710eSEric Fiselier const F f = F(); 2566369c03SMarshall Clow static_assert((std::is_same<int, F::first_argument_type>::value), "" ); 2666369c03SMarshall Clow static_assert((std::is_same<int, F::second_argument_type>::value), "" ); 2766369c03SMarshall Clow static_assert((std::is_same<bool, F::result_type>::value), "" ); 285a83710eSEric Fiselier assert(f(36, 36)); 295a83710eSEric Fiselier assert(!f(36, 6)); 305a83710eSEric Fiselier assert(f(6, 36)); 31*d697ee41SEric Fiselier { 32*d697ee41SEric Fiselier // test total ordering of int* for less_equal<int*> and 33*d697ee41SEric Fiselier // less_equal<void>. 34*d697ee41SEric Fiselier do_pointer_comparison_test<int, std::less_equal>(); 35*d697ee41SEric Fiselier } 36*d697ee41SEric Fiselier #if TEST_STD_VER > 11 375a83710eSEric Fiselier typedef std::less_equal<> F2; 385a83710eSEric Fiselier const F2 f2 = F2(); 395a83710eSEric Fiselier assert( f2(36, 36)); 405a83710eSEric Fiselier assert(!f2(36, 6)); 415a83710eSEric Fiselier assert( f2(6, 36)); 425a83710eSEric Fiselier assert(!f2(36, 6.0)); 435a83710eSEric Fiselier assert(!f2(36.0, 6)); 445a83710eSEric Fiselier assert( f2(6, 36.0)); 455a83710eSEric Fiselier assert( f2(6.0, 36)); 465a83710eSEric Fiselier 475a83710eSEric Fiselier constexpr bool foo = std::less_equal<int> () (36, 36); 485a83710eSEric Fiselier static_assert ( foo, "" ); 495a83710eSEric Fiselier 505a83710eSEric Fiselier constexpr bool bar = std::less_equal<> () (36.0, 36); 515a83710eSEric Fiselier static_assert ( bar, "" ); 525a83710eSEric Fiselier #endif 535a83710eSEric Fiselier } 54