etl/include
Roland Reichwein 53b3b3702f Fix delegate not being cleared by assigning empty braces
Fixes issue #1399.

The non-capturing lambda support (PR#1295) added a non-explicit
delegate(function_ptr) constructor and operator=(function_ptr). This
caused `delegate = {}` to implicitly convert `{}` to a null function
pointer and bind it via function_ptr_stub, leaving the delegate
appearing valid (stub != nullptr) but invoking through a null pointer
(undefined behavior).

Fix:
- Mark delegate(function_ptr) constructor explicit to prevent implicit
  conversion from `{}` during initialization.
- In operator=(function_ptr), clear the delegate when fp is null
  instead of binding a null pointer through function_ptr_stub.

Added tests verifying that both `delegate d = {}` and `d = {}` produce
an invalid (cleared) delegate.
2026-04-21 15:11:02 +02:00
..
etl Fix delegate not being cleared by assigning empty braces 2026-04-21 15:11:02 +02:00