On Friday, 8 February 2013 at 20:12:41 UTC, Dan wrote:
This constant in a module causes a compilation error of the
"non-constant expression" variety.
DEFINITION 1
const(AssetProjectionMap) SavingsGrowth2013 = [
AssetReturnType.Interest :
RateCurve([DateRate(Date.min, CcRate(0.007))]),
];
The fix that addresses this error at module level is:
DEFINITION 2
const(AssetProjectionMap) SavingsGrowth2013;
static this() {
SavingsGrowth2013 = [
AssetReturnType.Interest :
RateCurve([DateRate(Date.min, CcRate(0.007))]),
];
}
However, the same constant, when defined in a unittest block
works with DEFINITION 1. What is the reason for the difference
between unittest constants and module constants?
Thanks,
Dan
unittest blocks are evaluated at run time, just like your
DEFINITION 2, and unlike your DEFINITION 1 which would be
evaluated at compile time.