mirror of
https://github.com/Naios/continuable.git
synced 2025-12-06 08:46:44 +08:00
Attempt to fix the clang build
This commit is contained in:
parent
0da0dca385
commit
31b37dfbcf
@ -119,37 +119,40 @@ using void_t = typename detail::deduce_to_void<T...>::type;
|
|||||||
}(0)
|
}(0)
|
||||||
#else
|
#else
|
||||||
namespace detail {
|
namespace detail {
|
||||||
template <typename TrueCallback>
|
template <typename TrueCallback, typename Guard>
|
||||||
constexpr void static_if_impl(std::true_type, TrueCallback&& trueCallback) {
|
constexpr void static_if_impl(std::true_type, TrueCallback&& trueCallback,
|
||||||
std::forward<TrueCallback>(trueCallback)(0);
|
Guard&& guard) {
|
||||||
|
std::forward<TrueCallback>(trueCallback)(guard);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TrueCallback>
|
template <typename TrueCallback, typename Guard>
|
||||||
constexpr void static_if_impl(std::false_type,
|
constexpr void static_if_impl(std::false_type, TrueCallback&& /*trueCallback*/,
|
||||||
TrueCallback&& /*trueCallback*/) {
|
Guard&& /*guard*/) {
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TrueCallback, typename FalseCallback>
|
template <typename TrueCallback, typename FalseCallback, typename Guard>
|
||||||
constexpr auto static_if_impl(std::true_type, TrueCallback&& trueCallback,
|
constexpr auto static_if_impl(std::true_type, TrueCallback&& trueCallback,
|
||||||
FalseCallback&& /*falseCallback*/) {
|
FalseCallback&& /*falseCallback*/,
|
||||||
return std::forward<TrueCallback>(trueCallback)(0);
|
Guard&& guard) {
|
||||||
|
return std::forward<TrueCallback>(trueCallback)(guard);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename TrueCallback, typename FalseCallback>
|
template <typename TrueCallback, typename FalseCallback, typename Guard>
|
||||||
constexpr auto static_if_impl(std::false_type, TrueCallback&& /*trueCallback*/,
|
constexpr auto static_if_impl(std::false_type, TrueCallback&& /*trueCallback*/,
|
||||||
FalseCallback&& falseCallback) {
|
FalseCallback&& falseCallback, Guard&& guard) {
|
||||||
return std::forward<FalseCallback>(falseCallback)(0);
|
return std::forward<FalseCallback>(falseCallback)(guard);
|
||||||
}
|
}
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|
||||||
#define CONTINUABLE_IF_CONSTEXPR_SELECT_2(EXPR, TRUE_BRANCH) \
|
#define CONTINUABLE_IF_CONSTEXPR_SELECT_2(EXPR, TRUE_BRANCH) \
|
||||||
cti::detail::traits::detail::static_if_impl( \
|
cti::detail::traits::detail::static_if_impl( \
|
||||||
std::integral_constant<bool, EXPR>{}, [&](auto) mutable { TRUE_BRANCH })
|
std::integral_constant<bool, EXPR>{}, [&](auto) mutable { TRUE_BRANCH }, \
|
||||||
|
EXPR)
|
||||||
|
|
||||||
#define CONTINUABLE_IF_CONSTEXPR_SELECT_3(EXPR, TRUE_BRANCH, FALSE_BRANCH) \
|
#define CONTINUABLE_IF_CONSTEXPR_SELECT_3(EXPR, TRUE_BRANCH, FALSE_BRANCH) \
|
||||||
cti::detail::traits::detail::static_if_impl( \
|
cti::detail::traits::detail::static_if_impl( \
|
||||||
std::integral_constant<bool, EXPR>{}, [&](auto) mutable { TRUE_BRANCH }, \
|
std::integral_constant<bool, EXPR>{}, [&](auto) mutable { TRUE_BRANCH }, \
|
||||||
[&](auto) { FALSE_BRANCH })
|
[&](auto) { FALSE_BRANCH }, EXPR)
|
||||||
#endif // CONTINUABLE_HAS_CXX17_IF_CONSTEXPR
|
#endif // CONTINUABLE_HAS_CXX17_IF_CONSTEXPR
|
||||||
|
|
||||||
// https://stackoverflow.com/questions/16374776/macro-overloading
|
// https://stackoverflow.com/questions/16374776/macro-overloading
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user