5#include <libcopp/utils/config/libcopp_build_features.h>
9LIBCOPP_COPP_NAMESPACE_BEGIN
11template <class T, class TPTR = typename poll_storage_ptr_selector<T>::type>
12class LIBCOPP_COPP_API_HEAD_ONLY
poller {
22 inline poller() noexcept { poll_storage::construct_default_storage(storage_data_); }
25 poll_storage::construct_default_storage(storage_data_);
29 inline poller(U &&...in)
noexcept(
noexcept(poll_storage::construct_storage(std::declval<storage_type &>(),
30 std::forward<U>(in)...))) {
31 setup_from(std::forward<U>(in)...);
29 inline poller(U &&...in)
noexcept(
noexcept(poll_storage::construct_storage(std::declval<storage_type &>(), {
…}
34 inline poller(
self_type &&other)
noexcept(
noexcept(poll_storage::move_storage(std::declval<storage_type &>(),
35 std::declval<storage_type>()))) {
36 setup_from(std::move(other));
34 inline poller(
self_type &&other)
noexcept(
noexcept(poll_storage::move_storage(std::declval<storage_type &>(), {
…}
40 noexcept(poll_storage::move_storage(std::declval<storage_type &>(), std::declval<storage_type>()))) {
41 setup_from(std::move(other));
46 inline poller &
operator=(U &&in)
noexcept(
noexcept(poll_storage::construct_storage(std::declval<storage_type &>(),
47 std::forward<U>(in)))) {
48 setup_from(std::forward<U>(in));
46 inline poller &
operator=(U &&in)
noexcept(
noexcept(poll_storage::construct_storage(std::declval<storage_type &>(), {
…}
63 poll_storage::reset(storage_data_);
66 poll_storage::swap(storage_data_, other.storage_data_);
71 template <
class U,
class UDELETER,
72 typename std::enable_if<std::is_base_of<T, typename std::decay<U>::type>::value,
bool>::type =
false>
73 inline void setup_from(std::unique_ptr<U, UDELETER> &&in)
noexcept(
74 noexcept(poll_storage::construct_storage(std::declval<storage_type &>(), std::move(in)))) {
75 poll_storage::construct_storage(storage_data_, std::move(in));
73 inline void setup_from(std::unique_ptr<U, UDELETER> &&in)
noexcept( {
…}
78 template <
class... TARGS>
80 noexcept(poll_storage::construct_storage(std::declval<storage_type &>(), std::forward<TARGS>(args)...))) {
81 poll_storage::construct_storage(storage_data_, std::forward<TARGS>(args)...);
85 noexcept(poll_storage::move_storage(std::declval<storage_type &>(), std::move(other.storage_data_)))) {
86 poll_storage::move_storage(storage_data_, std::move(other.storage_data_));
12class LIBCOPP_COPP_API_HEAD_ONLY
poller {
…};
93LIBCOPP_COPP_NAMESPACE_END
LIBCOPP_UTIL_FORCEINLINE const value_type * data() const noexcept
void setup_from(TARGS &&...args) noexcept(noexcept(poll_storage::construct_storage(std::declval< storage_type & >(), std::forward< TARGS >(args)...)))
typename poll_storage::ptr_type ptr_type
storage_type storage_data_
poller & operator=(U &&in) noexcept(noexcept(poll_storage::construct_storage(std::declval< storage_type & >(), std::forward< U >(in))))
typename poll_storage::storage_type storage_type
LIBCOPP_UTIL_FORCEINLINE bool is_ready() const noexcept
LIBCOPP_UTIL_FORCEINLINE friend void swap(self_type &l, self_type &r) noexcept
~poller() noexcept(std::is_nothrow_destructible< storage_type >::value)
poller(U &&...in) noexcept(noexcept(poll_storage::construct_storage(std::declval< storage_type & >(), std::forward< U >(in)...)))
poller(self_type &&other) noexcept(noexcept(poll_storage::move_storage(std::declval< storage_type & >(), std::declval< storage_type >())))
LIBCOPP_UTIL_FORCEINLINE void reset() noexcept(noexcept(poll_storage::reset(std::declval< storage_type & >())))
LIBCOPP_UTIL_FORCEINLINE ptr_type & raw_ptr() noexcept
poller & operator=(self_type &&other) noexcept(noexcept(poll_storage::move_storage(std::declval< storage_type & >(), std::declval< storage_type >())))
void setup_from(self_type &&other) noexcept(noexcept(poll_storage::move_storage(std::declval< storage_type & >(), std::move(other.storage_data_))))
LIBCOPP_UTIL_FORCEINLINE value_type * data() noexcept
LIBCOPP_UTIL_FORCEINLINE void swap(self_type &other) noexcept
void setup_from(std::unique_ptr< U, UDELETER > &&in) noexcept(noexcept(poll_storage::construct_storage(std::declval< storage_type & >(), std::move(in))))
LIBCOPP_UTIL_FORCEINLINE const ptr_type & raw_ptr() const noexcept
typename poll_storage::value_type value_type
LIBCOPP_UTIL_FORCEINLINE bool is_pending() const noexcept
#define LIBCOPP_UTIL_FORCEINLINE