Skip to content

Commit 7e0e7fb

Browse files
committed
[FOLD]
1 parent a6a1522 commit 7e0e7fb

1 file changed

Lines changed: 2 additions & 46 deletions

File tree

include/boost/capy/io/write_now.hpp

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,8 @@ class write_now
114114
std::stop_token token_;
115115
bool done_ = false;
116116

117-
// GCC 14 ICEs on any template type instantiated
118-
// with an IoAwaitable in the coroutine frame, even
119-
// trivial ones. Type-erase behind function pointers
120-
// so the frame sees only a non-template struct.
117+
// GCC 14 ICE bisection: trivially destructible
118+
// aggregate with full interface
121119
struct erased_io_awaiter
122120
{
123121
void* inner_;
@@ -148,48 +146,6 @@ class write_now
148146
inner_ = nullptr;
149147
return r;
150148
}
151-
152-
erased_io_awaiter(
153-
void* inner,
154-
promise_type* p,
155-
bool (*ready)(void*),
156-
coro (*suspend)(
157-
void*, coro,
158-
executor_ref, std::stop_token),
159-
io_result<std::size_t> (*resume)(void*),
160-
void (*destroy)(void*)) noexcept
161-
: inner_(inner)
162-
, p_(p)
163-
, ready_(ready)
164-
, suspend_(suspend)
165-
, resume_(resume)
166-
, destroy_(destroy)
167-
{
168-
}
169-
170-
~erased_io_awaiter()
171-
{
172-
if(inner_)
173-
destroy_(inner_);
174-
}
175-
176-
erased_io_awaiter(
177-
erased_io_awaiter&& o) noexcept
178-
: inner_(std::exchange(o.inner_, nullptr))
179-
, p_(o.p_)
180-
, ready_(o.ready_)
181-
, suspend_(o.suspend_)
182-
, resume_(o.resume_)
183-
, destroy_(o.destroy_)
184-
{
185-
}
186-
187-
erased_io_awaiter(
188-
erased_io_awaiter const&) = delete;
189-
erased_io_awaiter& operator=(
190-
erased_io_awaiter const&) = delete;
191-
erased_io_awaiter& operator=(
192-
erased_io_awaiter&&) = delete;
193149
};
194150

195151
op_type get_return_object()

0 commit comments

Comments
 (0)