New
v0.42.0
Additions:
- Define
gsl_MAYBE_UNUSED_MEMBERfor[[maybe_unused]]annotations on members (https://github.com/gsl-lite/gsl-lite/commit/34ba5141492a88912e2055e08cd1bdd6714431c5) - Support
not_null<void*>(#341, thanks to @BenFrantzDale) - Support
not_null<>forunique_ptr<void, D>andshared_ptr<void>(#349, thanks to @BenFrantzDale)
Changes:
- For modern (≥v1) defaults,
finally(),on_return(), andon_error()are now implemented without virtual function calls (#342) - Deprecate
finally(),on_return(), andon_error()for pre-C++11 (#342) narrow_failfast<>()now usesgsl_Assert()rather thangsl_Expects()to express the contract check (#351)std::hash<gsl_lite::byte>now forwards tostd::hash<unsigned char>(#343)- Add Continuous Integration for GCC 13, Clang 17 to 19, and for NVCC 12.6; remove CI for GCC 10 on macOS and for Apple Clang 12.0.5 and earlier (#351)
Fixes:
std::terminate()cannot be called from CUDA device code, but the call may go undetected due to a NVCC issue; for!gsl_CONFIG( NARROW_THROWS_ON_TRUNCATION ),narrow<>()now makes sure that the program is terminated by issuing a trap instruction ifstd::terminate()is not available (#351, thanks to @pauleonix for helping track this down)narrow<>()no longer responds togsl_CONFIG_CONTRACT_VIOLATION_THROWSbecause it does not do contract checking; therefore, it now plainly fails to compile ifgsl_CONFIG_NARROW_THROWS_ON_TRUNCATIONis set to 1 even though exceptions are unavailable (e.g. in device code) (#351)- Fix issues in test suite (#338, thanks to @musicinmybrain)