Originally, I wanted to extend the ‘table reference’ feature to the iteration of objects:
struct Object {};
constexpr auto object_table = c<Object>();
auto storage = make_storage("", make_table<object_table>());
storage.iterate<object_table>();
This PR also includes changes and improvements to the object iterator:
Disentangled iterator from its object view: an iterator doesn't need to access the object view itself nor the storage. All it needs is access to the 'db objects'.
Made all of iterator_t private, it's currently not designed for derivation.
Removed redundant access checks.
Ensure that iterator_t is a LegacyInputIterator
Turned the object view into a so-called 'borrowed view', which guarantees that a function can take it by value and return iterators obtained from it without danger of dangling.
Originally, I wanted to extend the ‘table reference’ feature to the iteration of objects:
This PR also includes changes and improvements to the object iterator:
iterator_t
private, it's currently not designed for derivation.iterator_t
is aLegacyInputIterator