Add constraints to use_awaitable_t::executor_with_default's constructor to prevent template instantiation recursion.
This commit is contained in:
parent
c12bdd3d23
commit
77bcfe775a
@ -99,17 +99,14 @@ struct use_awaitable_t
|
|||||||
typedef use_awaitable_t default_completion_token_type;
|
typedef use_awaitable_t default_completion_token_type;
|
||||||
|
|
||||||
/// Construct the adapted executor from the inner executor type.
|
/// Construct the adapted executor from the inner executor type.
|
||||||
executor_with_default(const InnerExecutor& ex) ASIO_NOEXCEPT
|
template <typename InnerExecutor1>
|
||||||
: InnerExecutor(ex)
|
executor_with_default(const InnerExecutor1& ex,
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Convert the specified executor to the inner executor type, then use
|
|
||||||
/// that to construct the adapted executor.
|
|
||||||
template <typename OtherExecutor>
|
|
||||||
executor_with_default(const OtherExecutor& ex,
|
|
||||||
typename constraint<
|
typename constraint<
|
||||||
is_convertible<OtherExecutor, InnerExecutor>::value
|
conditional<
|
||||||
|
!is_same<InnerExecutor1, executor_with_default>::value,
|
||||||
|
is_convertible<InnerExecutor1, InnerExecutor>,
|
||||||
|
false_type
|
||||||
|
>::type::value
|
||||||
>::type = 0) ASIO_NOEXCEPT
|
>::type = 0) ASIO_NOEXCEPT
|
||||||
: InnerExecutor(ex)
|
: InnerExecutor(ex)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user