mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-12 14:54:10 +00:00
add ptr_fun, mem_fun, mem_fun_ref
This commit is contained in:
parent
4a8e938887
commit
f86d17d0d4
46 changed files with 322 additions and 76 deletions
53
sprout/functional/ptr_fun.hpp
Normal file
53
sprout/functional/ptr_fun.hpp
Normal file
|
@ -0,0 +1,53 @@
|
|||
#ifndef SPROUT_FUNCTIONAL_PTR_FUN_HPP
|
||||
#define SPROUT_FUNCTIONAL_PTR_FUN_HPP
|
||||
|
||||
#include <sprout/config.hpp>
|
||||
#include <sprout/functional/base.hpp>
|
||||
|
||||
namespace sprout {
|
||||
// D.8.2.1 adaptors (deprecated)
|
||||
|
||||
template<typename Arg, typename Result>
|
||||
class pointer_to_unary_function
|
||||
: public sprout::unary_function<Arg, Result>
|
||||
{
|
||||
protected:
|
||||
Result (*ptr_)(Arg);
|
||||
public:
|
||||
pointer_to_unary_function() = default;
|
||||
explicit SPROUT_CONSTEXPR pointer_to_unary_function(Result (*x)(Arg))
|
||||
: ptr_(x)
|
||||
{}
|
||||
SPROUT_CONSTEXPR Result operator()(Arg x) const {
|
||||
return ptr_(x);
|
||||
}
|
||||
};
|
||||
|
||||
template<typename Arg, typename Result>
|
||||
inline SPROUT_CONSTEXPR sprout::pointer_to_unary_function<Arg, Result> ptr_fun(Result (*x)(Arg)) {
|
||||
return sprout::pointer_to_unary_function<Arg, Result>(x);
|
||||
}
|
||||
|
||||
template<typename Arg1, typename Arg2, typename Result>
|
||||
class pointer_to_binary_function
|
||||
: public sprout::binary_function<Arg1, Arg2, Result>
|
||||
{
|
||||
protected:
|
||||
Result (*ptr_)(Arg1, Arg2);
|
||||
public:
|
||||
pointer_to_binary_function() = default;
|
||||
explicit SPROUT_CONSTEXPR pointer_to_binary_function(Result (*x)(Arg1, Arg2))
|
||||
: ptr_(x)
|
||||
{}
|
||||
SPROUT_CONSTEXPR Result operator()(Arg1 x, Arg2 y) const {
|
||||
return ptr_(x, y);
|
||||
}
|
||||
};
|
||||
|
||||
template<typename Arg1, typename Arg2, typename Result>
|
||||
inline SPROUT_CONSTEXPR sprout::pointer_to_binary_function<Arg1, Arg2, Result> ptr_fun(Result (*x)(Arg1, Arg2)) {
|
||||
return sprout::pointer_to_binary_function<Arg1, Arg2, Result>(x);
|
||||
}
|
||||
} // namespace sprout
|
||||
|
||||
#endif // #ifndef SPROUT_FUNCTIONAL_PTR_FUN_HPP
|
Loading…
Add table
Add a link
Reference in a new issue