00001 #ifndef INSTIGATE_STL_FUNCTOR_HPP 00002 #define INSTIGATE_STL_FUNCTOR_HPP 00003 00049 #include "concept.hpp" 00050 00051 namespace instigate { 00052 namespace stl { 00054 namespace unary_function { 00055 struct tag; 00056 } 00062 namespace functor { 00063 template <typename T> 00064 struct interface; 00065 00066 template <typename R, typename A> 00067 struct interface< R (A::*) () >; 00068 } 00069 } 00070 } 00076 template <typename T> 00077 struct instigate::stl::functor::interface 00078 { 00080 typedef typename T::argument_type argument_type; 00081 00083 typedef typename T::result_type result_type; 00084 }; 00085 00091 template <typename R, typename A> 00092 struct instigate::stl::functor::interface< R (A::*)() > 00093 { 00095 typedef A* argument_type; 00096 00098 typedef R result_type; 00099 }; 00100 00101 #endif // INSTIGATE_STL_FUNCTOR_HPP