Releases: rollbear/strong_type
v5
-
Fixed a regression with
strong::formattableand fmtlib. A type that isstrong::ostreamablecan be formatted with fmt. A type that is bothstrong::formattableandstrong::ostreamablewill use the typesformatter<>when using fmt. The behaviour ofstd::formatis unchanged. -
strong::arithmeticno longer specializesstd::is_arithmetic<>. This is expressively disallowed by the standard and is undefined behaviour. Sorry for this potentially breaking change, but it was always wrong.
v4
-
strong::affine_point can now be defaulted as
strong::affine_point<>, in which case a difference type will be
generated using the same tag as the strong affine point type. -
operator% is now conditionally supported for arithmetic types,
provided that the underlying type supports the operation. -
operator% is also conditionally supported for difference types,
difference % difference => underlying type, and
difference % underlying type => difference. -
strong::difference is now strong::equality comparable in addition
to being strong::ordered
v3
-
increment/decrement operators are now hidden friends
-
swap() is now constexpr. Thanks Björn Schäpers @HazardyKnusperkeks
-
operator() is now noexcept if the underlying type has a
noexcept operator (). Thanks Björn Schäpers @HazardyKnusperkeks -
Fixed bug where clang++ on Windows wrongly used MSVC work-arounds
-
Fixed bug where non-const operator[] returned const&
-
Use github-actions for CI
v2
-
Fixed strong::underlying_type for CRTP defined strong type T
-
Added strong::ordered_with<Ts...> for cross-type ordering
relations. -
Added strong::equality_with<Ts...> for cross-type equality
comparison operators. -
Added strong::unique modifier for creating move-only types
v1
First non-experimental release!
v1 2020-07-11
-
Moved to Boost Software License (BSL) 1.0 license
-
Added convertible_to<Ts...> and implicitly_convertible_to<Ts...>
modifiers. -
Added strong::uninitialized for when you want to create a
variable with unitialized value. Unlike the built in types,
this is explicitly visible at the site of use. -
Moved many namespace scope functions as inline friends to
avoid ADL issues. -
Added strong::semiregular and strong::regular since they are
such frequently seen good defaults. -
Many internal improvements and compiler bug work-arounds.
-
Added strong::iterator and strong::range modifiers.
-
More noexcept() specifiers
-
Removed strong::unique and strong::scoped. They are different
beasts that don't feel quite at home here. Thanks Adi Shavit.