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 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:
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user