lumiera_documentation/src/lib
Ichthyostega 68460d4900 Library: a subtle fix to iterator value-type deduction
After some investigation, I seem to understand the problem better now.
This builds upon the Introduction of our `ValueTraits´ two years ago:

e176e54004

The root cause to these ongoing sporadic problems with type deduction
seems to be that we encounter a **clash of concepts**: What Lumiera calls
an »Iterator« is essentially different to the order of terms used by the STL.
In the STL, an iterator can be seen as an ''abstracted pointer'', and is
thus only meaningful in conjunction with a backing container. It is also
this backing STL container that provides the value-type definitions.

In Lumiera however, an ''Iterator is a promise to retrieve a sequence of evaluations''.
For that reason, the Iterator itself provides value-type definitions,
and the notion of "iterable" can largely be conflated with "Lumiera Iterator".

Now, the `lib::RangeIter` can act as a bridge between both usage patterns,
and thus it is possible to create a `RangeIter` both from a Lumiera Iterator
or from a STL container. (As an aside, this is a similar idea as promoted
by the "Range TS" in C++20 -- yet the Lumiera iterator concept is much more
abstract and allows evaluations like tree expansion and search algorithms,
which would be never possible with the STL based notion of iteration)...

Thus the value type binding in `RangeIter` is the only correct place
where to mitigate this ''clash of concepts:''
 * if the `IT` parameter is a Lumiera iterator, we need to retrieve
   the type bindings defined therein
 * otherwise, we can assume that `IT` is an STL iterator and thus
   essentially a pointer, and we must strip that pointer and work from there.
2026-03-25 21:07:26 +01:00
..
diff Tests: build an link a test-support library 2026-03-06 23:16:32 +01:00
idi Upgrade: simplify comparisons 2025-07-04 03:37:54 +02:00
meta MERGE: Application code and namespace reorganisation 2026-03-04 02:59:57 +01:00
stat Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
time clean-up: some Doxygen improvements 2025-11-05 02:55:45 +01:00
access-casted-o.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
access-casted.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
allocation-cluster.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
allocation-cluster.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
allocator-handle.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
binary-search.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
branch-case.hpp Library: demonstrate »the« textbook example 2025-01-28 20:23:28 +01:00
builder-qualifier-support.hpp BufferProvider: prototyping for a proxy-BufferProvider 2026-02-22 00:30:45 +01:00
call-queue.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
cmdline.cpp clean-up: trifles 2025-06-07 23:59:57 +02:00
cmdline.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
del-stash.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
depend-inject.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
depend.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
diagnostic-context.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
DIR_INFO
dot-gen.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
element-tracker.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
error-exception.cpp Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
error-state.c Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
error.h Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
error.hpp Upgrade: Literal can be constexpr 2025-07-02 22:18:39 +02:00
file.cpp Clean-up: get rid of boost::filesystem 2025-04-27 23:54:21 +02:00
file.hpp Clean-up: get rid of boost::filesystem 2025-04-27 23:54:21 +02:00
format-cout.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
format-obj.cpp Tests: build an link a test-support library 2026-03-06 23:16:32 +01:00
format-obj.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
format-string.cpp Upgrade: Literal can be constexpr 2025-07-02 22:18:39 +02:00
format-string.hpp Upgrade: Literal can be constexpr 2025-07-02 22:18:39 +02:00
format-util.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
frameid.hpp Upgrade: simplify comparisons 2025-07-04 03:37:54 +02:00
fun-hash-dispatch.hpp Invocation: define aspects of ProcID to cover 2025-01-11 17:05:53 +01:00
gnuplot-gen.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
gnuplot-gen.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
handle.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
hash-combine.hpp Upgrade: improve Doxygen parameters and treat some warnings 2025-04-27 05:00:14 +02:00
hash-indexed.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
hash-standard.hpp clean-up: update links embedded into API-doc (Doxygen) 2025-09-19 19:51:28 +02:00
hash-value.h Invocation: change TestFrame to use a dedicated header 2024-11-19 01:05:56 +01:00
hetero-data.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
incidence-count.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
index-iter.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
integral.hpp Upgrade: improve Doxygen parameters and treat some warnings 2025-04-27 05:00:14 +02:00
ios-savepoint.hpp clean-up: update links embedded into API-doc (Doxygen) 2025-09-19 19:51:28 +02:00
item-wrapper.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
iter-adapter-ptr-deref.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
iter-adapter-stl.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
iter-adapter.hpp Library: a subtle fix to iterator value-type deduction 2026-03-25 21:07:26 +01:00
iter-chain-search.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
iter-cursor.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
iter-explorer.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
iter-source.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
iter-stack.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
iter-zip.hpp Upgrade: further extend usage of the tuple_like concept + generic apply 2025-07-02 01:16:08 +02:00
itertools.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
lazy-init.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
lifecycle.cpp Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
lifecycleregistry.hpp Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
linked-elements.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
llist.h Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
lockerror.c Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
lockerror.h Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
luid.c Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
luid.h Upgrade: improve Doxygen parameters and treat some warnings 2025-04-27 05:00:14 +02:00
multifact.hpp clean-up: some Doxygen improvements 2025-11-05 02:55:45 +01:00
mutex.c Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
mutex.h Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
nobug-init.cpp Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
nobug-init.hpp Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
nocopy.hpp clean-up: update links embedded into API-doc (Doxygen) 2025-09-19 19:51:28 +02:00
null-value.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
opaque-holder.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
optional-ref.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
p.hpp Upgrade: switch to C++23 (see #1245) 2025-06-19 01:52:55 +02:00
parse.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
path-array.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
polymorphic-value.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
ppmpl.h Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
psplay.c clean-up: trifles 2025-06-07 23:59:57 +02:00
psplay.h clean-up: trifles 2025-06-07 23:59:57 +02:00
query-diagnostics.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
query-text.cpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
query-text.hpp Upgrade: simplify comparisons 2025-07-04 03:37:54 +02:00
query-util.cpp clean-up: trifles 2025-06-07 23:59:57 +02:00
query-util.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
random-draw.hpp clean-up: some Doxygen improvements 2025-11-05 02:55:45 +01:00
random-reseed.cpp Library: ensure automatic re-seeding for TestFrame 2026-02-23 00:05:44 +01:00
random-reseed.hpp Library: ensure automatic re-seeding for TestFrame 2026-02-23 00:05:44 +01:00
random.cpp Tests: build an link a test-support library 2026-03-06 23:16:32 +01:00
random.hpp Tests: build an link a test-support library 2026-03-06 23:16:32 +01:00
rational.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
recmutex.c Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
recmutex.h Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
regex.hpp Library: suppress leading whitespace automatically 2025-01-18 22:25:03 +01:00
result.hpp Upgrade: simplify Either-type 2025-07-04 21:27:50 +02:00
safeclib.c Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
safeclib.h Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
scoped-collection.hpp BufferProvider: simplify OutputSlot implementation structure 2026-03-14 03:36:15 +01:00
scoped-ptrvect.hpp clean-up: some Doxygen improvements 2025-11-05 02:55:45 +01:00
searchpath.cpp clean-up: trifles 2025-06-07 23:59:57 +02:00
searchpath.hpp Clean-up: reimplement the SeachPathSplitter 2025-04-28 19:14:27 +02:00
sectionlock.h Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
several-builder.hpp BufferProvider: research how to build a policy with callbacks 2026-02-26 02:20:51 +01:00
several.hpp clean-up: update content of the introductory overview pages 2025-10-28 02:23:42 +01:00
split-splice.hpp clean-up: some Doxygen improvements 2025-11-05 02:55:45 +01:00
symbol-impl.cpp Upgrade: Literal can be constexpr 2025-07-02 22:18:39 +02:00
symbol-table.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
symbol.hpp Upgrade: Literal can be constexpr 2025-07-02 22:18:39 +02:00
sync-barrier.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
sync-classlock.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
sync.hpp Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
text-template-gen-node-binding.hpp clean-up: some Doxygen improvements 2025-11-05 02:55:45 +01:00
text-template.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
thread.cpp Upgrade: improve Doxygen parameters and treat some warnings 2025-04-27 05:00:14 +02:00
thread.hpp BufferProvider: research how to build a policy with callbacks 2026-02-26 02:20:51 +01:00
tmpbuf.c Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
tmpbuf.h Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
typed-allocation-manager.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
typed-counter.hpp Upgrade: Literal can be constexpr 2025-07-02 22:18:39 +02:00
uninitialised-storage.hpp clean-up: update links embedded into API-doc (Doxygen) 2025-09-19 19:51:28 +02:00
unique-malloc-owner.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
util-coll.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
util-foreach.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
util-quant.hpp clean-up: update links embedded into API-doc (Doxygen) 2025-09-19 19:51:28 +02:00
util-tuple.hpp Upgrade: improve Doxygen parameters and treat some warnings 2025-04-27 05:00:14 +02:00
util.cpp clean-up: trifles 2025-06-07 23:59:57 +02:00
util.hpp OutputSlot: fill in the tracking implementation 2026-03-24 23:19:05 +01:00
variant-o.hpp Copyright: clarify and simplify the file headers 2024-11-17 23:42:55 +01:00
variant.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
verb-token.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
verb-visitor.hpp clean-up: update links embedded into API-doc (Doxygen) 2025-09-19 19:51:28 +02:00
visitor-dispatcher.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
visitor-policies.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
visitor.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
wrapper-function-result.hpp Upgrade: down with typename!! 2025-07-06 01:19:08 +02:00
wrapperptr.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00
zombie-check.hpp clean-up: trifles 2025-06-07 23:59:57 +02:00