view gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// 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, "");
}