Skip to content

Releases: rollbear/strong_type

v5

20 Oct 08:22

Choose a tag to compare

v5
  • Fixed a regression with strong::formattable and fmtlib. A type that is strong::ostreamable can be formatted with fmt. A type that is both strong::formattable and strong::ostreamable will use the types formatter<> when using fmt. The behaviour of std::format is unchanged.

  • strong::arithmetic no longer specializes std::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

16 Aug 12:07

Choose a tag to compare

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

02 Aug 16:03

Choose a tag to compare

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

13 Jul 17:22

Choose a tag to compare

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

11 Jul 16:30

Choose a tag to compare

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.