lumiera_documentation/doc/technical
Ichthyostega a0d83b4fe8 Library: investigate design for an opaque inline functor
This is a design study to find out what would be required
to build an opaque function wrapper, similar to `std::function`,
yet without using any heap memory ever.

Such a building block would allow for some interesting options
for a well structured design of elaborate data structures.

This changeset provides an implementation draft.

__Two important findings to note__:
 * it is impossible to get away with just a single function pointer
 * because at the very least we need to invoke the destructor of the
   embedded delegate. Thus something akin to a "manager" is required.
 * this implies that the component would not be so efficient as I hoped,
   since it requires two pointers and requires to emit code for each
   type of delegate.
 * by making the component **NonCopyable**, I avoided the complexities
   of virtual copy support. In case the latter is desired, it would be
   much simpler to switch to a classical OO approach with a VTable
   and use our `PolymorphicValue` wrapper to handle copy and cloning.
2026-04-08 01:53:53 +02:00
..
build Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
code Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
howto Library: investigate design for an opaque inline functor 2026-04-08 01:53:53 +02:00
infra Tests: build an link a test-support library 2026-03-06 23:16:32 +01:00
library Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
stage Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
steam Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
vault clean-up: comb through the historical pages to fix markup errors 2025-09-21 05:40:15 +02:00
DIR_INFO update some DIR_INFO entries 2011-04-05 00:44:30 +02:00
index.txt Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00
overview.txt Application: Adjustments to the Layer structure 2026-03-03 22:16:09 +01:00