+++ /dev/null
-// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
-// This source code is licensed under both the GPLv2 (found in the
-// COPYING file in the root directory) and Apache 2.0 License
-// (found in the LICENSE.Apache file in the root directory).
-
-#pragma once
-
-#include <folly/Traits.h>
-
-#include <functional>
-#include <type_traits>
-
-namespace folly {
-namespace invoke_detail {
-template <typename F, typename... Args>
-using invoke_result_ = decltype(std::declval<F>()(std::declval<Args>()...));
-
-template <typename Void, typename F, typename... Args>
-struct is_invocable : std::false_type {};
-
-template <typename F, typename... Args>
-struct is_invocable<void_t<invoke_result_<F, Args...>>, F, Args...>
- : std::true_type {};
-
-template <typename Void, typename R, typename F, typename... Args>
-struct is_invocable_r : std::false_type {};
-
-template <typename R, typename F, typename... Args>
-struct is_invocable_r<void_t<invoke_result_<F, Args...>>, R, F, Args...>
- : std::is_convertible<invoke_result_<F, Args...>, R> {};
-} // namespace invoke_detail
-
-// mimic: std::is_invocable, C++17
-template <typename F, typename... Args>
-struct is_invocable : invoke_detail::is_invocable<void, F, Args...> {};
-
-// mimic: std::is_invocable_r, C++17
-template <typename R, typename F, typename... Args>
-struct is_invocable_r : invoke_detail::is_invocable_r<void, R, F, Args...> {};
-} // namespace folly