fixed using uv_loop_t as a tag to dispatch
This commit is contained in:
parent
cb3c6a62dd
commit
a7fba77879
@ -12,21 +12,6 @@
|
|||||||
namespace uvw {
|
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;
|
class Loop;
|
||||||
|
|
||||||
|
|
||||||
@ -34,9 +19,9 @@ template<typename R>
|
|||||||
class Handle {
|
class Handle {
|
||||||
friend class Loop;
|
friend class Loop;
|
||||||
|
|
||||||
template<typename... Args, std::enable_if_t<not details::isBaseOfAny<Handle<R>, Args...>()>* = nullptr>
|
template<typename... Args>
|
||||||
explicit constexpr Handle(Args&&... args)
|
explicit constexpr Handle(uv_loop_t *loop, Args&&... args)
|
||||||
: res{std::make_shared<R>(std::forward<Args>(args)...)}
|
: res{std::make_shared<R>(loop, std::forward<Args>(args)...)}
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
void f(uvw::Loop &loop) {
|
void f(uvw::Loop &loop) {
|
||||||
uvw::Handle<uvw::Tcp> handle = loop.handle<uvw::Tcp>();
|
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;
|
uvw::Tcp &tcp = handle;
|
||||||
tcp.connect<uvw::Tcp::IPv4>(std::string{"127.0.0.1"}, 80, cb);
|
tcp.connect<uvw::Tcp::IPv4>(std::string{"127.0.0.1"}, 80, cb);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user