// PR c++/65985
// { dg-do compile { target c++14 } }
#include <cassert>
class Angle
{
  int degrees = 0;
  constexpr auto invariant() const noexcept
  {
    return 0 <= degrees && degrees < 360;
  }
public:
  explicit constexpr Angle(int n) noexcept
    : degrees{n % 360}
  {
    assert(invariant());
  }
  /* implicit */ constexpr operator auto() const noexcept
  {
    return degrees;
  }
};
int main()
{
  static_assert(Angle{360} == 0, "");
}