1// std::rel_ops implementation -*- C++ -*- 2 3// Copyright (C) 2001-2013 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15 16// Under Section 7 of GPL version 3, you are granted additional 17// permissions described in the GCC Runtime Library Exception, version 18// 3.1, as published by the, 2009 Free Software Foundation. 19 20// You should have received a copy of the GNU General Public License and 21// a copy of the GCC Runtime Library Exception along with this program; 22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23// <http://www.gnu.org/licenses/>. 24 25/* 26 * 27 * Copyright (c) 1994 28 * Hewlett-Packard Company 29 * 30 * Permission to use, copy, modify, distribute and sell this software 31 * and its documentation for any purpose is hereby granted without fee, 32 * provided that the above copyright notice appear in all copies and 33 * that both that copyright notice and this permission notice appear 34 * in supporting documentation. Hewlett-Packard Company makes no 35 * representations about the suitability of this software for any 36 * purpose. It is provided "as is" without express or implied warranty. 37 * 38 * Copyright (c) 1996,1997 39 * Silicon Graphics 40 * 41 * Permission to use, copy, modify, distribute and sell this software 42 * and its documentation for any purpose is hereby granted without fee, 43 * provided that the above copyright notice appear in all copies and 44 * that both that copyright notice and this permission notice appear 45 * in supporting documentation. Silicon Graphics makes no 46 * representations about the suitability of this software for any 47 * purpose. It is provided "as is" without express or implied warranty. 48 * 49 */ 50 51/** @file bits/stl_relops.h 52 * This is an internal header file, included by other library headers. 53 * Do not attempt to use it directly. @headername{utility} 54 * 55 * Inclusion of this file has been removed from 56 * all of the other STL headers for safety reasons, except std_utility.h. 57 * For more information, see the thread of about twenty messages starting 58 * with http://gcc.gnu.org/ml/libstdc++/2001-01/msg00223.html, or 59 * http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.ambiguous_overloads 60 * 61 * Short summary: the rel_ops operators should be avoided for the present. 62 */ 63 64#ifndef _STL_RELOPS_H 65#define _STL_RELOPS_H 1 66 67namespace std _GLIBCXX_VISIBILITY(default) 68{ 69 namespace rel_ops 70 { 71 _GLIBCXX_BEGIN_NAMESPACE_VERSION 72 73 /** @namespace std::rel_ops 74 * @brief The generated relational operators are sequestered here. 75 */ 76 77 /** 78 * @brief Defines @c != for arbitrary types, in terms of @c ==. 79 * @param __x A thing. 80 * @param __y Another thing. 81 * @return __x != __y 82 * 83 * This function uses @c == to determine its result. 84 */ 85 template <class _Tp> 86 inline bool 87 operator!=(const _Tp& __x, const _Tp& __y) 88 { return !(__x == __y); } 89 90 /** 91 * @brief Defines @c > for arbitrary types, in terms of @c <. 92 * @param __x A thing. 93 * @param __y Another thing. 94 * @return __x > __y 95 * 96 * This function uses @c < to determine its result. 97 */ 98 template <class _Tp> 99 inline bool 100 operator>(const _Tp& __x, const _Tp& __y) 101 { return __y < __x; } 102 103 /** 104 * @brief Defines @c <= for arbitrary types, in terms of @c <. 105 * @param __x A thing. 106 * @param __y Another thing. 107 * @return __x <= __y 108 * 109 * This function uses @c < to determine its result. 110 */ 111 template <class _Tp> 112 inline bool 113 operator<=(const _Tp& __x, const _Tp& __y) 114 { return !(__y < __x); } 115 116 /** 117 * @brief Defines @c >= for arbitrary types, in terms of @c <. 118 * @param __x A thing. 119 * @param __y Another thing. 120 * @return __x >= __y 121 * 122 * This function uses @c < to determine its result. 123 */ 124 template <class _Tp> 125 inline bool 126 operator>=(const _Tp& __x, const _Tp& __y) 127 { return !(__x < __y); } 128 129 _GLIBCXX_END_NAMESPACE_VERSION 130 } // namespace rel_ops 131 132} // namespace std 133 134#endif /* _STL_RELOPS_H */ 135