176d0caaeSpatrick // -*- C++ -*- 276d0caaeSpatrick //===----------------------------------------------------------------------===// 376d0caaeSpatrick // 476d0caaeSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 576d0caaeSpatrick // See https://llvm.org/LICENSE.txt for license information. 676d0caaeSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 776d0caaeSpatrick // 876d0caaeSpatrick //===----------------------------------------------------------------------===// 976d0caaeSpatrick 1076d0caaeSpatrick #ifndef _LIBCPP___FUNCTIONAL_BINARY_FUNCTION_H 1176d0caaeSpatrick #define _LIBCPP___FUNCTIONAL_BINARY_FUNCTION_H 1276d0caaeSpatrick 1376d0caaeSpatrick #include <__config> 1476d0caaeSpatrick 1576d0caaeSpatrick #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 1676d0caaeSpatrick # pragma GCC system_header 1776d0caaeSpatrick #endif 1876d0caaeSpatrick 1976d0caaeSpatrick _LIBCPP_BEGIN_NAMESPACE_STD 2076d0caaeSpatrick 21*4bdff4beSrobert #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) 22*4bdff4beSrobert 2376d0caaeSpatrick template <class _Arg1, class _Arg2, class _Result> 24*4bdff4beSrobert struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX11 binary_function 2576d0caaeSpatrick { 2676d0caaeSpatrick typedef _Arg1 first_argument_type; 2776d0caaeSpatrick typedef _Arg2 second_argument_type; 2876d0caaeSpatrick typedef _Result result_type; 2976d0caaeSpatrick }; 3076d0caaeSpatrick 31*4bdff4beSrobert #endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) 32*4bdff4beSrobert 33*4bdff4beSrobert template <class _Arg1, class _Arg2, class _Result> struct __binary_function_keep_layout_base { 34*4bdff4beSrobert #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_BINDER_TYPEDEFS) 35*4bdff4beSrobert using first_argument_type _LIBCPP_DEPRECATED_IN_CXX17 = _Arg1; 36*4bdff4beSrobert using second_argument_type _LIBCPP_DEPRECATED_IN_CXX17 = _Arg2; 37*4bdff4beSrobert using result_type _LIBCPP_DEPRECATED_IN_CXX17 = _Result; 38*4bdff4beSrobert #endif 39*4bdff4beSrobert }; 40*4bdff4beSrobert 41*4bdff4beSrobert #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION) 42*4bdff4beSrobert _LIBCPP_DIAGNOSTIC_PUSH 43*4bdff4beSrobert _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wdeprecated-declarations") 44*4bdff4beSrobert template <class _Arg1, class _Arg2, class _Result> 45*4bdff4beSrobert using __binary_function = binary_function<_Arg1, _Arg2, _Result>; 46*4bdff4beSrobert _LIBCPP_DIAGNOSTIC_POP 47*4bdff4beSrobert #else 48*4bdff4beSrobert template <class _Arg1, class _Arg2, class _Result> 49*4bdff4beSrobert using __binary_function = __binary_function_keep_layout_base<_Arg1, _Arg2, _Result>; 50*4bdff4beSrobert #endif 51*4bdff4beSrobert 5276d0caaeSpatrick _LIBCPP_END_NAMESPACE_STD 5376d0caaeSpatrick 5476d0caaeSpatrick #endif // _LIBCPP___FUNCTIONAL_BINARY_FUNCTION_H 55