|
@ -1,4 +1,5 @@ |
|
|
#pragma once
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
#include <type_traits>
|
|
|
#include <type_traits>
|
|
|
#include "gp/algorithm/move.hpp"
|
|
|
#include "gp/algorithm/move.hpp"
|
|
|
|
|
|
|
|
@ -23,7 +24,12 @@ namespace gp { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Code extrated from cppreference.com and the libc++ Library project, licensed under MIT license */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
********************************************************************************************** |
|
|
|
|
|
Code extrated from cppreference.com and the libc++ Library project, licensed under MIT license |
|
|
|
|
|
********************************************************************************************** |
|
|
|
|
|
**/ |
|
|
|
|
|
|
|
|
namespace detail { |
|
|
namespace detail { |
|
|
template <class> |
|
|
template <class> |
|
@ -67,8 +73,6 @@ namespace gp { |
|
|
return detail::INVOKE(gp::forward<F>(f), gp::forward<Args>(args)...); |
|
|
return detail::INVOKE(gp::forward<F>(f), gp::forward<Args>(args)...); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template< class T > |
|
|
template< class T > |
|
|
struct remove_cvref { |
|
|
struct remove_cvref { |
|
|
typedef std::remove_cv_t<std::remove_reference_t<T>> type; |
|
|
typedef std::remove_cv_t<std::remove_reference_t<T>> type; |
|
@ -177,28 +181,7 @@ namespace gp { |
|
|
inline __not_fn_imp<std::decay_t<_RawFunc>> not_fn(_RawFunc&& __fn) { |
|
|
inline __not_fn_imp<std::decay_t<_RawFunc>> not_fn(_RawFunc&& __fn) { |
|
|
return __not_fn_imp<std::decay_t<_RawFunc>>(gp::forward<_RawFunc>(__fn)); |
|
|
return __not_fn_imp<std::decay_t<_RawFunc>>(gp::forward<_RawFunc>(__fn)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
********************************************************************************************* |
|
|
|
|
|
*/ |
|
|
} |
|
|
} |