36 Star 102 Fork 33

Jack.arain / avhttp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
handler_type_check.hpp 1.19 KB
一键复制 编辑 原始数据 按行查看 历史
Jack.arain 提交于 2013-02-01 19:49 . Initial commit
//
// Copyright (C) 2019 Jack.
//
// Author: jack
// Email: jack.wgm at gmail dot com
//
#pragma once
#include <type_traits>
#include <boost/asio/async_result.hpp>
namespace avhttp {
namespace detail {
template<class R, class C, class ...A>
auto is_invocable_test(C&& c, int, A&& ...a)
-> decltype(std::is_convertible<decltype(c(std::forward<A>(a)...)), R>::value
|| std::is_same<R, void>::value, std::true_type());
template<class R, class C, class ...A>
std::false_type
is_invocable_test(C&& c, long, A&& ...a);
template<class C, class F>
struct is_invocable : std::false_type
{};
template<class C, class R, class ...A>
struct is_invocable<C, R(A...)>
: decltype(is_invocable_test<R>(
std::declval<C>(), 1, std::declval<A>()...))
{};
template<class T, class Signature>
using is_completion_handler = std::integral_constant<bool,
std::is_move_constructible<typename std::decay<T>::type>::value &&
detail::is_invocable<T, Signature>::value>;
#define AVHTTP_HANDLER_TYPE_CHECK(type, sig) \
static_assert(avhttp::detail::is_completion_handler< \
BOOST_ASIO_HANDLER_TYPE(type, sig), sig>::value, \
"CompletionHandler signature requirements not met")
}
}
C++
1
https://gitee.com/jackarain/avhttp.git
git@gitee.com:jackarain/avhttp.git
jackarain
avhttp
avhttp
master

搜索帮助