From cb3c6a62ddb6a4d8c6d266265e5fa9a76c212e09 Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Mon, 20 Jun 2016 14:45:31 +0200 Subject: [PATCH] strict check on constructors for Handle --- src/uvw/loop.hpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/uvw/loop.hpp b/src/uvw/loop.hpp index db1a1e29..5ee0c2a2 100644 --- a/src/uvw/loop.hpp +++ b/src/uvw/loop.hpp @@ -5,12 +5,28 @@ #include #include #include +#include #include "error.hpp" namespace uvw { +namespace details { + + +template +constexpr auto isBaseOfAny() { + bool ret = false; + int a[] = { (ret = ret || std::is_base_of>>::value, 0)... }; + (void)a; + return ret; +} + + +} + + class Loop; @@ -18,7 +34,7 @@ template class Handle { friend class Loop; - template + template, Args...>()>* = nullptr> explicit constexpr Handle(Args&&... args) : res{std::make_shared(std::forward(args)...)} { }