Changes since v0.1:
- Changes to the delegate source code:
- complete overhaul of internal code while keeping the interface compatible with versions since v0.1
- added the possibility to directly assign function objects to delegates, e.g. `rome::delegate<bool(int)> = [](int i){ return i>0; };`
- fixed that creating a delegate from a small buffer optimizable function object was falsely set `noexcept` if the function object was copied and copying is not `noexcept`
- fixed compiler generated, hidden exception checks in the delegate's destructors because the internally used functions were incorrectly not set `noexcept`
- improved compile error messages, especially if function objects of incompatible signature are assigned
- minimized amount of code generated through templates
- made the library single header (merged headers)
- Changes to the tests:
- added CMake to build and run the tests (minimum required version is 3.20)
- improved consistency, readability and performance of unit tests and added some missing checks
- added tests for expected compile errors
- added tests of the provided examples
- added code coverage report for unit test runs (LLVM only)
- added address sanitizer and undefined behavior sanitizer analysis to unit test runs (LLVM only)
- added clang-tidy static analysis
- added additional Clang and GCC toolchains for C++14 and C++23 to CI test runs
- improved documentation