31 template <
typename Ex>
33 #if FOLLY_HAS_EXCEPTIONS 34 throw static_cast<Ex&&
>(ex);
44 template <
typename Ex>
53 return static_cast<T&&
>(
t);
55 template <std::
size_t N>
57 char const (&array)[N]) {
58 return static_cast<char const*
>(array);
60 template <
typename Ex,
typename...
Args>
64 template <
typename Ex,
typename...
Args>
78 template <
typename Ex,
typename...
Args>
81 detail::throw_exception_<Ex>(
89 template <
typename Ex,
typename...
Args>
92 detail::terminate_with_<Ex>(
121 template <
typename F,
typename...
A>
125 static_cast<F&&
>(
f)(static_cast<A&&>(
a)...);
FOLLY_ALWAYS_INLINE FOLLY_ATTR_VISIBILITY_HIDDEN T && to_exception_arg_(T &&t)
#define FOLLY_ALWAYS_INLINE
FOLLY_NOINLINE FOLLY_COLD void terminate_with(Ex &&ex) noexcept
FOLLY_NOINLINE FOLLY_COLD void terminate_with_(Args &&...args) noexcept
FOLLY_NOINLINE FOLLY_COLD void throw_exception_(Args &&...args)
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
—— Concurrent Priority Queue Implementation ——
requires E e noexcept(noexcept(s.error(std::move(e))))
FOLLY_NOINLINE FOLLY_COLD void invoke_noreturn_cold(F &&f, A &&...a)
#define FOLLY_ATTR_VISIBILITY_HIDDEN
FOLLY_NOINLINE FOLLY_COLD void throw_exception(Ex &&ex)