<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">Replace std::binary_function with typedefs (deprecated in c++11 and removed in c++17).
Bug: https://bugs.gentoo.org/869170
--- a/src/core/CLucene/index/_Term.h
+++ b/src/core/CLucene/index/_Term.h
@@ -13,9 +13,12 @@
 CL_NS_DEF(index)
 
 
-class Term_Equals:public CL_NS_STD(binary_function)&lt;const Term*,const Term*,bool&gt;
+class Term_Equals
 {
 public:
+	typedef const Term* first_argument_type;
+	typedef const Term* second_argument_type;
+	typedef bool result_type;
 	bool operator()( const Term* val1, const Term* val2 ) const{
 		return val1-&gt;equals(val2);
 	}
--- a/src/core/CLucene/search/BooleanQuery.cpp
+++ b/src/core/CLucene/search/BooleanQuery.cpp
@@ -25,9 +25,12 @@ CL_NS_USE(index)
 CL_NS_USE(util)
 CL_NS_DEF(search)
 
-	class BooleanClause_Compare:public CL_NS_STD(binary_function)&lt;const BooleanClause*,const BooleanClause*,bool&gt;
+	class BooleanClause_Compare
 	{
 	public:
+		typedef const BooleanClause* first_argument_type;
+		typedef const BooleanClause* second_argument_type;
+		typedef bool result_type;
 		bool operator()( const BooleanClause* val1, const BooleanClause* val2 ) const {
 			return val1-&gt;equals(val2);
 		}
--- a/src/core/CLucene/search/MultiPhraseQuery.cpp
+++ b/src/core/CLucene/search/MultiPhraseQuery.cpp
@@ -377,9 +377,12 @@ TCHAR* MultiPhraseQuery::toString(const TCHAR* f) const {
 	return buffer.giveBuffer();
 }
 
-class TermArray_Equals:public CL_NS_STD(binary_function)&lt;const Term**,const Term**,bool&gt;
+class TermArray_Equals
 {
 public:
+	typedef const Term** first_argument_type;
+	typedef const Term** second_argument_type;
+	typedef bool result_type;
 	bool operator()( CL_NS(util)::ArrayBase&lt;CL_NS(index)::Term*&gt;* val1, CL_NS(util)::ArrayBase&lt;CL_NS(index)::Term*&gt;* val2 ) const{
     if ( val1-&gt;length != val2-&gt;length )
       return false;
--- a/src/core/CLucene/util/Equators.h
+++ b/src/core/CLucene/util/Equators.h
@@ -22,21 +22,30 @@ CL_NS_DEF(util)
 /** @internal */
 class CLUCENE_INLINE_EXPORT Equals{
 public:
-	class CLUCENE_INLINE_EXPORT Int32:public CL_NS_STD(binary_function)&lt;const int32_t*,const int32_t*,bool&gt;
+	class CLUCENE_INLINE_EXPORT Int32
 	{
 	public:
+		typedef const int32_t* first_argument_type;
+		typedef const int32_t* second_argument_type;
+		typedef bool result_type;
 		bool operator()( const int32_t val1, const int32_t val2 ) const;
 	};
 	
-	class CLUCENE_INLINE_EXPORT Char:public CL_NS_STD(binary_function)&lt;const char*,const char*,bool&gt;
+	class CLUCENE_INLINE_EXPORT Char
 	{
 	public:
+		typedef const char* first_argument_type;
+		typedef const char* second_argument_type;
+		typedef bool result_type;
 		bool operator()( const char* val1, const char* val2 ) const;
 	};
 #ifdef _UCS2
-	class CLUCENE_INLINE_EXPORT WChar: public CL_NS_STD(binary_function)&lt;const wchar_t*,const wchar_t*,bool&gt;
+	class CLUCENE_INLINE_EXPORT WChar
 	{
 	public:
+		typedef const wchar_t* first_argument_type;
+		typedef const wchar_t* second_argument_type;
+		typedef bool result_type;
 		bool operator()( const wchar_t* val1, const wchar_t* val2 ) const;
 	};
 	class CLUCENE_INLINE_EXPORT TChar: public WChar{
@@ -48,9 +57,12 @@ public:
 
 
     template&lt;typename _cl&gt;
-	class CLUCENE_INLINE_EXPORT Void:public CL_NS_STD(binary_function)&lt;const void*,const void*,bool&gt;
+	class CLUCENE_INLINE_EXPORT Void
 	{
 	public:
+		typedef const void* first_argument_type;
+		typedef const void* second_argument_type;
+		typedef bool result_type;
 		bool operator()( _cl* val1, _cl* val2 ) const{
 			return val1==val2;
 		}
--- a/src/core/CLucene/util/_Arrays.h
+++ b/src/core/CLucene/util/_Arrays.h
@@ -124,12 +124,14 @@ CL_NS_DEF(util)
 	
 	template &lt;typename _kt, typename _comparator, 
 		typename class1, typename class2&gt;
-	class CLListEquals:
-		public CL_NS_STD(binary_function)&lt;class1*,class2*,bool&gt;
+	class CLListEquals
 	{
 	typedef typename class1::const_iterator _itr1;
 	typedef typename class2::const_iterator _itr2;
 	public:
+		typedef class1* first_argument_type;
+		typedef class2* second_argument_type;
+		typedef bool result_type;
 		CLListEquals(){
 		}
 		bool equals( class1* val1, class2* val2 ) const{
--- a/src/test/index/TestTermVectorsReader.cpp
+++ b/src/test/index/TestTermVectorsReader.cpp
@@ -93,17 +93,21 @@ CL_NS_USE(util);
     }
   };
 
-  struct MyTCharCompare :
-    public std::binary_function&lt;const TCHAR*, const TCHAR*, bool&gt;
+  struct MyTCharCompare
   {
+    typedef const TCHAR* first_argument_type;
+    typedef const TCHAR* second_argument_type;
+    typedef bool result_type;
     bool operator () (const TCHAR* v1, const TCHAR* v2) const {
       return _tcscmp(v1, v2) &lt; 0;
     }
   };
 
-  struct TestTokenCompare : 
-    public std::binary_function&lt;const TestToken*, const TestToken*, bool&gt;
+  struct TestTokenCompare
   {
+    typedef const TestToken* first_argument_type;
+    typedef const TestToken* second_argument_type;
+    typedef bool result_type;
     bool operator () (const TestToken* t1, const TestToken* t2) const {
       return t1-&gt;pos &lt; t2-&gt;pos;
     }
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -45,6 +45,14 @@ ELSE(NOT CMAKE_BUILD_TYPE)
     MESSAGE( "Compiling as ${CMAKE_BUILD_TYPE}" )
 ENDIF(NOT CMAKE_BUILD_TYPE)
 
+IF(CMAKE_C_COMPILER_ID MATCHES "Clang")
+  SET(CMAKE_COMPILER_IS_CLANG 1)
+ENDIF(CMAKE_C_COMPILER_ID MATCHES "Clang")
+
+IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+  SET(CMAKE_COMPILER_IS_CLANGXX 1)
+ENDIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+
 OPTION(ENABLE_DEBUG
   "enable debug support"
   OFF)
@@ -62,14 +70,14 @@ OPTION(ENABLE_ASCII_MODE
   OFF)
   
 SET(ENABLE_ANSI_MODE OFF)
-IF(CMAKE_COMPILER_IS_GNUCXX)
+IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
   SET(ENABLE_ANSI_MODE ON)
   
   #exceptions:
   IF(MINGW OR CYGWIN)
     SET(ENABLE_ANSI_MODE OFF)
   ENDIF(MINGW OR CYGWIN)
-ENDIF(CMAKE_COMPILER_IS_GNUCXX)
+ENDIF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGXX)
 
 OPTION(ENABLE_ANSI_MODE
   "compile with -ansi flag"
@@ -109,7 +117,7 @@ OPTION(ENABLE_COMPILE_TESTS
 
 #check flags...
 INCLUDE (TestCXXAcceptsFlag)
-IF ( CMAKE_COMPILER_IS_GNUCC )
+IF ( CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG )
     CHECK_CXX_ACCEPTS_FLAG(-pg GccFlagPg)
     IF ( GccFlagPg )
         OPTION(ENABLE_GPROF
@@ -131,7 +139,7 @@ IF ( CMAKE_COMPILER_IS_GNUCC )
    IF( ENABLE_ANSI_MODE )
     SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ansi")
    ENDIF ( ENABLE_ANSI_MODE )
-ENDIF(CMAKE_COMPILER_IS_GNUCC) 
+ENDIF(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) 
 
 
 #Single output directory for building all executables and libraries.
</pre></body></html>