Fix some 2-phase lookup issues that caused Clang build to break.

This commit is contained in:
Lewis Baker 2018-10-31 20:18:56 -07:00
parent 38d5af8648
commit a44c6895f7
3 changed files with 15 additions and 15 deletions

View file

@ -142,13 +142,13 @@ namespace cppcoro
private:
template<typename SEQUENCE, typename TRAITS>
template<typename SEQUENCE2, typename TRAITS2>
friend class multi_producer_sequencer_wait_operation_base;
template<typename SEQUENCE, typename TRAITS, typename SCHEDULER>
template<typename SEQUENCE2, typename TRAITS2, typename SCHEDULER>
friend class multi_producer_sequencer_claim_operation;
template<typename SEQUENCE, typename TRAITS, typename SCHEDULER>
template<typename SEQUENCE2, typename TRAITS2, typename SCHEDULER>
friend class multi_producer_sequencer_claim_one_operation;
void resume_ready_awaiters() noexcept;
@ -448,15 +448,15 @@ namespace cppcoro
if (!m_scheduleAwaiter->await_ready())
{
using await_suspend_result_t = decltype(m_scheduleAwaiter->await_suspend(m_awaitingCoroutine));
using await_suspend_result_t = decltype(m_scheduleAwaiter->await_suspend(this->m_awaitingCoroutine));
if constexpr (std::is_void_v<await_suspend_result_t>)
{
m_scheduleAwaiter->await_suspend(m_awaitingCoroutine);
m_scheduleAwaiter->await_suspend(this->m_awaitingCoroutine);
return;
}
else if constexpr (std::is_same_v<await_suspend_result_t, bool>)
{
if (m_scheduleAwaiter->await_suspend(m_awaitingCoroutine))
if (m_scheduleAwaiter->await_suspend(this->m_awaitingCoroutine))
{
return;
}
@ -464,7 +464,7 @@ namespace cppcoro
else
{
// Assume it returns a coroutine_handle.
m_scheduleAwaiter->await_suspend(m_awaitingCoroutine).resume();
m_scheduleAwaiter->await_suspend(this->m_awaitingCoroutine).resume();
return;
}
}
@ -477,7 +477,7 @@ namespace cppcoro
}
// Resume outside the catch-block.
m_awaitingCoroutine.resume();
this->m_awaitingCoroutine.resume();
}
SCHEDULER& m_scheduler;

View file

@ -254,15 +254,15 @@ namespace cppcoro
if (!m_scheduleAwaiter->await_ready())
{
using await_suspend_result_t = decltype(m_scheduleAwaiter->await_suspend(m_awaitingCoroutine));
using await_suspend_result_t = decltype(m_scheduleAwaiter->await_suspend(this->m_awaitingCoroutine));
if constexpr (std::is_void_v<await_suspend_result_t>)
{
m_scheduleAwaiter->await_suspend(m_awaitingCoroutine);
m_scheduleAwaiter->await_suspend(this->m_awaitingCoroutine);
return;
}
else if constexpr (std::is_same_v<await_suspend_result_t, bool>)
{
if (m_scheduleAwaiter->await_suspend(m_awaitingCoroutine))
if (m_scheduleAwaiter->await_suspend(this->m_awaitingCoroutine))
{
return;
}
@ -270,7 +270,7 @@ namespace cppcoro
else
{
// Assume it returns a coroutine_handle.
m_scheduleAwaiter->await_suspend(m_awaitingCoroutine).resume();
m_scheduleAwaiter->await_suspend(this->m_awaitingCoroutine).resume();
return;
}
}
@ -283,7 +283,7 @@ namespace cppcoro
}
// Resume outside the catch-block.
m_awaitingCoroutine.resume();
this->m_awaitingCoroutine.resume();
}
SCHEDULER& m_scheduler;

View file

@ -116,10 +116,10 @@ namespace cppcoro
private:
template<typename SEQUENCE, typename TRAITS, typename SCHEDULER>
template<typename SEQUENCE2, typename TRAITS2, typename SCHEDULER>
friend class single_producer_sequencer_claim_operation;
template<typename SEQUENCE, typename TRAITS, typename SCHEDULER>
template<typename SEQUENCE2, typename TRAITS2, typename SCHEDULER>
friend class single_producer_sequencer_claim_one_operation;
#if CPPCORO_COMPILER_MSVC