
On Tue, 2 Sept 2025 at 00:21, Klemens Morgenstern via Boost <boost@lists.boost.org> wrote:
On Mon, Sep 1, 2025 at 10:13 AM Darryl Green via Boost < boost@lists.boost.org> wrote:
Not to derail this conversation - but as its the only issue I raised that Max didn't also raise:
The non-throwing throwing duality is particularly quirky in resultset, and somewhat coupled to owning resultsets - in that having a resultset that when being iterated over or otherwise used to extract rows, returns (contains) a result that is (something like) a std::expected or boost::outcome not a row (that if not there can't be returned hence the throwing behaviour of operator*).
Id' like to see some discussion on that
Can you explain a bit more what you mean?
There is a non-throwing API for reading rows, but it cannot be used nicely in a ranged for-loop.
Yes exactly. But if it were a range of std::expected<row_t,error_t> (or some type of similar concept) and if the iterator became equal to end() on hitting an error ..