base: Use constexpr in Cycles
authorAndreas Sandberg <Andreas.Sandberg@ARM.com>
Fri, 7 Aug 2015 08:59:12 +0000 (09:59 +0100)
committerAndreas Sandberg <Andreas.Sandberg@ARM.com>
Fri, 7 Aug 2015 08:59:12 +0000 (09:59 +0100)
commit3e26756f1dfe1ddd1d7f5e458771c9bf79acb09a
tree6d189d36689d70e7ce905492af89c8d7d43673e2
parent83a668ad2564d1231f59f130c81cab6e7e31c364
base: Use constexpr in Cycles

Declare the constructor and all of the operators that don't change the
state of a Cycles instance as constexpr. This makes it possible to use
Cycles as a static constant and allows the compiler to evaulate simple
expressions at compile time. An unfortunate side-effect of this is
that we cannot use assertions since C++11 doesn't support them in
constexpr functions. As a workaround, we throw an invalid_argument
exception when the assert would have triggered. A nice side-effect of
this is that the compiler will evaluate the "assertion" at compile
time when an expression involving Cycles can be statically evaluated.
src/base/types.hh