I noticed the following words in [expr.prim.id.unqual]: 
This seems to exclude structured bindings.
C++23 added fold left with iter, returning structured bindings would be easy to happen:

std::string foo()
{
    using namespace std::literals;
    std::vector rg = { "a"sv, "b"sv, "c"sv };
    auto [in, value] = std::ranges::fold_left_with_iter(std::ranges::begin(rg), std::ranges::end(rg), std::string{}, [](auto&& init, auto&& rhs) {
        return std::move(init += rhs);
    });
    if (in == std::ranges::end(rg))
        return value;
    else
        throw my_error_code;
}