https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105734

--- Comment #10 from Jeremy R. <llvm at rifkin dot dev> ---
One workaround in the general case is
decltype(ns::expression_decomposer(ns::expression_decomposer{} << expr)) =
libassert_decomposer = ns::expression_decomposer(ns::expression_decomposer{} <<
expr);

But this doesn't work if expr is a lambda.

A more general workaround is deferring the destructor to another function:

template<typename T> void destruct(T& t) {
    t.~T();
}
template <int>
void bar() {
    auto m = hh::s(hh::s{}.h());
    destruct(m);
}

Reply via email to