00001 00002 #ifndef _INSTIGATE_OPEN_SOURCE_INTERNAL_HEADER_IN_CONCEPT 00003 #error This is an internal header file used to implement Instigate STL.\ 00004 It should never be included directly by a program. 00005 #endif 00006 00007 #ifndef INSTIGATE_STL_BINARY_PREDICATE_HPP 00008 #define INSTIGATE_STL_BINARY_PREDICATE_HPP 00009 00058 // Headers from this project 00059 #include "_binary_function.hpp" 00060 00061 // Headers from other projects 00062 #include <generic/base.hpp> 00063 00064 // Headers from standard libraries 00065 #include <cassert> 00066 00067 // Forward declarations 00068 namespace instigate { 00069 namespace stl { 00079 namespace binary_predicate { 00080 template <typename BP> struct interface; 00081 template <typename T> struct requirements; 00082 } 00083 } 00084 } 00085 00096 template <typename BP> 00097 struct instigate::stl::binary_predicate::interface : 00098 instigate::stl::binary_function::interface<BP> 00099 { 00100 }; 00101 00109 template <typename T> 00110 struct instigate::stl::binary_predicate::requirements : 00111 instigate::stl::binary_function::requirements<T> 00112 { 00117 static void require_convertibility_of_result_type_to_bool() 00118 { 00119 CHECK_CONVERTIBILITY(typename instigate::stl:: 00120 binary_predicate::interface<T>::result_type, bool); 00121 } 00122 00129 requirements() 00130 { 00131 (void)&require_convertibility_of_result_type_to_bool; 00132 } 00133 00134 }; 00135 00136 //vim:et:tabstop=8:shiftwidth=8:cindent:fo=croq:textwidth=80: 00137 00138 #endif // INSTIGATE_STL_BINARY_PREDICATE_HPP