fixed using uv_loop_t as a tag to dispatch

This commit is contained in:
Michele Caini 2016-06-20 15:17:55 +02:00
parent cb3c6a62dd
commit a7fba77879
2 changed files with 4 additions and 19 deletions

View File

@ -12,21 +12,6 @@
namespace uvw {
namespace details {
template<typename T, typename... O>
constexpr auto isBaseOfAny() {
bool ret = false;
int a[] = { (ret = ret || std::is_base_of<T, std::remove_cv_t<std::remove_reference_t<O>>>::value, 0)... };
(void)a;
return ret;
}
}
class Loop;
@ -34,9 +19,9 @@ template<typename R>
class Handle {
friend class Loop;
template<typename... Args, std::enable_if_t<not details::isBaseOfAny<Handle<R>, Args...>()>* = nullptr>
explicit constexpr Handle(Args&&... args)
: res{std::make_shared<R>(std::forward<Args>(args)...)}
template<typename... Args>
explicit constexpr Handle(uv_loop_t *loop, Args&&... args)
: res{std::make_shared<R>(loop, std::forward<Args>(args)...)}
{ }
public:

View File

@ -4,7 +4,7 @@
void f(uvw::Loop &loop) {
uvw::Handle<uvw::Tcp> handle = loop.handle<uvw::Tcp>();
auto cb = [h{handle}](uvw::UVWError err){ std::cout << "---" << ((bool)err) << std::endl; };
auto cb = [h = handle](uvw::UVWError err){ std::cout << "---" << ((bool)err) << std::endl; };
uvw::Tcp &tcp = handle;
tcp.connect<uvw::Tcp::IPv4>(std::string{"127.0.0.1"}, 80, cb);
}