28 lines
795 B
C++
28 lines
795 B
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Copyright (c) Lewis Baker
|
|
// Licenced under MIT license. See LICENSE.txt for details.
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#ifndef CPPCORO_AWAITABLE_TRAITS_HPP_INCLUDED
|
|
#define CPPCORO_AWAITABLE_TRAITS_HPP_INCLUDED
|
|
|
|
#include <cppcoro/detail/get_awaiter.hpp>
|
|
|
|
#include <type_traits>
|
|
|
|
namespace cppcoro
|
|
{
|
|
template<typename T, typename = void>
|
|
struct awaitable_traits
|
|
{};
|
|
|
|
template<typename T>
|
|
struct awaitable_traits<T, std::void_t<decltype(cppcoro::detail::get_awaiter(std::declval<T>()))>>
|
|
{
|
|
using awaiter_t = decltype(cppcoro::detail::get_awaiter(std::declval<T>()));
|
|
|
|
using await_result_t = decltype(std::declval<awaiter_t>().await_resume());
|
|
};
|
|
}
|
|
|
|
#endif
|