* Updated ignore for hard link for CLion
* Initial working version
* Optimised advance template call
* Further optimsed advance
Updated docs and tests
* Moved comparison operators out of the class.
* Implement spaceship operator <=> for No-STL case (#1604)
This was disabled explicitly in recent commit
232c948674cff1b4b72c2d6b3acfa7342d096dd1 to prevent using
the <compare> header from STL.
Now, re-enabling by implementing an ETL version of it in compare.h
* Sponsorship message updates
* Fix duplicated check runs
* Refactored the advance function to fix issues with signed unsigned mod operations.
* clang-format
* Updated documentation for cyclic_value
* Modified code comments
* Fixed a logic issue in advance() where a less than maximum step from the minimum value for a cyclic value covering the full type's range would take the wrong logical path (Step would roll over), although calculating the correct result.
This could be cofusing to someone debugging cyclc_value.
* Added runtime ans static asserts for reverse ordered limts.
* clang-format
* Spelling fix 'fast' -> 'last'
* Code review updates
* clang-format
* Code review updates
* Code review updates
---------
Co-authored-by: John Wellbelove <john.wellbelove@etlcpp.com>
Co-authored-by: Roland Reichwein <Roland.Reichwein@bmw.de>
* Add more constexpr to ctors
* Adjust operator!=() in fixed_iterator.h
Instead of taking an iterator by reference, take it by value as
done in the other operators and overloads.
* Initialize move_iterator() current member
Prevent indeterminate values
* Fix fixed_iterator::operator* return type
fixed_iterator::operator* returned value_type by value, so writes like *it = ...
modified a temporary rather than the underlying location. This broke the
iterator’s intended use (e.g., writing to a fixed register/memory location).
Now returning iterator_traits<TIterator>::reference instead (const and
non-const overloads).
* Fixed move_iterator::operator+= and operator-= return type
move_iterator::operator+= / operator-= returned by value, but RandomAccessIterator
requirements (and std::move_iterator) expect these to return move_iterator&.
Returning by value also added an unnecessary copy and could break generic code
expecting reference semantics.