On Monday, 3 August 2015 at 12:13:15 UTC, HaraldZealot wrote:
I found myself in situation that were good that all types support `.examplevalues` property in unittest version. This property will return array of predefined values for specified type (we can even have some convention like `examplevalues[0]` is `init`, `examplevalues[1]` is `min` (for numerical type) an so on). If custom types doesn't redefine this property the array consist only from `init`.

The use case for this: templated struct or class with container-like semantics and internal unittest for method of such class.

Thoughts?

Why don't you use templates? Something like:

enum ValueType
{
        Init,
        Min,
        Max
}

auto exampleValues(T)()
{
        T[ValueType] retVal;

        retVal[ValueType.Init] = T.init;
static if (__traits(compiles, T.min)) retVal[ValueType.Min] = T.min; static if (__traits(compiles, T.max)) retVal[ValueType.Max] = T.max;

        return retVal;
}

exampleValues!int.writeln;
exampleValues!string.writeln;

Reply via email to