From 31b37dfbcf3ddde464bdcc6aa6882dc9d017ebf6 Mon Sep 17 00:00:00 2001 From: Denis Blank Date: Mon, 12 Mar 2018 14:20:59 +0100 Subject: [PATCH] Attempt to fix the clang build --- include/continuable/detail/traits.hpp | 31 +++++++++++++++------------ 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/include/continuable/detail/traits.hpp b/include/continuable/detail/traits.hpp index 3fffc61..a9f39c0 100644 --- a/include/continuable/detail/traits.hpp +++ b/include/continuable/detail/traits.hpp @@ -119,37 +119,40 @@ using void_t = typename detail::deduce_to_void::type; }(0) #else namespace detail { -template -constexpr void static_if_impl(std::true_type, TrueCallback&& trueCallback) { - std::forward(trueCallback)(0); +template +constexpr void static_if_impl(std::true_type, TrueCallback&& trueCallback, + Guard&& guard) { + std::forward(trueCallback)(guard); } -template -constexpr void static_if_impl(std::false_type, - TrueCallback&& /*trueCallback*/) { +template +constexpr void static_if_impl(std::false_type, TrueCallback&& /*trueCallback*/, + Guard&& /*guard*/) { } -template +template constexpr auto static_if_impl(std::true_type, TrueCallback&& trueCallback, - FalseCallback&& /*falseCallback*/) { - return std::forward(trueCallback)(0); + FalseCallback&& /*falseCallback*/, + Guard&& guard) { + return std::forward(trueCallback)(guard); } -template +template constexpr auto static_if_impl(std::false_type, TrueCallback&& /*trueCallback*/, - FalseCallback&& falseCallback) { - return std::forward(falseCallback)(0); + FalseCallback&& falseCallback, Guard&& guard) { + return std::forward(falseCallback)(guard); } } // namespace detail #define CONTINUABLE_IF_CONSTEXPR_SELECT_2(EXPR, TRUE_BRANCH) \ cti::detail::traits::detail::static_if_impl( \ - std::integral_constant{}, [&](auto) mutable { TRUE_BRANCH }) + std::integral_constant{}, [&](auto) mutable { TRUE_BRANCH }, \ + EXPR) #define CONTINUABLE_IF_CONSTEXPR_SELECT_3(EXPR, TRUE_BRANCH, FALSE_BRANCH) \ cti::detail::traits::detail::static_if_impl( \ std::integral_constant{}, [&](auto) mutable { TRUE_BRANCH }, \ - [&](auto) { FALSE_BRANCH }) + [&](auto) { FALSE_BRANCH }, EXPR) #endif // CONTINUABLE_HAS_CXX17_IF_CONSTEXPR // https://stackoverflow.com/questions/16374776/macro-overloading