All notable changes to the ScL.Utility module will be documented in this file.
The format is based on Keep a Changelog.
add_reference_like_t now treats non-reference Base the same as
rvalue reference, matching C++23 std::forward_like semantics. Previously a non-reference
Base produced a non-reference result, which caused executor_access::get to return by
value via a forwarding reference and triggered a Clang error (dangling rvalue-reference
member in wrapper_guard).gtest_discover_tests to test time (DISCOVERY_MODE PRE_TEST) for
MinGW compatibility.__PRETTY_FUNCTION__-based path for
type_name, enum_name, and symbol_name. Previously, Clang defined _MSC_VER
on Windows but used [S = ...] / [T = ...] format instead of MSVC angle-bracket
style, causing prefix/suffix detection to return 0 and produce empty names.
The _MSC_VER guards are now conditioned on !defined(__clang__).struct/class keywords and
does not add a space before >> in nested templates.noexcept specifier to all public and internal constexpr functions
in type.h, enum.h, symbol.h. All functions operate on std::string_view and
cannot throw.type_name<T> / type_short_name<T> — type name retrieval with MSVC normalization.enum_name<V> / enum_short_name<V> — enum member name retrieval.symbol_name<S> / symbol_short_name<S> — function and data member name retrieval.SCL_FORWARD(...) — identity variadic macro for token forwarding.SCL_COUNTER_VALUE(Tag) / SCL_COUNTER_NEXT(Tag) — compile-time counter via ADL.is_detected, detected_t, detected_or).forward_like — forward with value category of another type.member_like — member pointer trait decomposition.overload_cast<Args...> — overloaded function pointer disambiguation.