diff --git a/src/ripple/basics/random.h b/src/ripple/basics/random.h index dfb379e6c..82dd873b5 100644 --- a/src/ripple/basics/random.h +++ b/src/ripple/basics/random.h @@ -22,7 +22,6 @@ #include #include -#include #include #include #include @@ -30,7 +29,7 @@ #include #include #include -#include +#include // namespace ripple { @@ -52,7 +51,7 @@ namespace detail { // Determines if a type can be called like an Engine template using is_engine = - boost::beast::detail::is_invocable; + std::is_invocable; } /** Return the default random engine. diff --git a/src/ripple/beast/cxx17/type_traits.h b/src/ripple/beast/cxx17/type_traits.h index 6a6dba848..95f42b105 100644 --- a/src/ripple/beast/cxx17/type_traits.h +++ b/src/ripple/beast/cxx17/type_traits.h @@ -60,6 +60,46 @@ struct is_constructible > explicit is_constructible() = default; }; +//------------------------------------------------------------------------------ + +namespace detail { +template +auto +is_invocable_test(C&& c, int, A&& ...a) + -> decltype(std::is_convertible< + decltype(c(std::forward(a)...)), R>::value || + std::is_same::value, + std::true_type()); + +template +std::false_type +is_invocable_test(C&& c, long, A&& ...a); +} // detail + +/** Metafunction returns `true` if F callable as R(A...) + + Example: + + @code + is_invocable + @endcode +*/ +/** @{ */ +template +struct is_invocable : std::false_type +{ +}; + +template +struct is_invocable + : decltype(std::detail::is_invocable_test( + std::declval(), 1, std::declval()...)) +{ +}; +/** @} */ + +//------------------------------------------------------------------------------ + } // std #endif diff --git a/src/test/jtx/Env.h b/src/test/jtx/Env.h index 56e74f2f0..228ebade5 100644 --- a/src/test/jtx/Env.h +++ b/src/test/jtx/Env.h @@ -45,11 +45,10 @@ #include #include #include -#include #include #include #include -#include +#include // #include #include #include @@ -691,7 +690,7 @@ protected: FN const&... fN) { maybe_invoke(stx, f, - boost::beast::detail::is_invocable()); invoke(stx, fN...); } @@ -725,7 +724,7 @@ protected: FN const&... fN) { maybe_invoke(jt, f, - boost::beast::detail::is_invocable()); invoke(jt, fN...); }