Template specializations in unittest blocks

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Mon Jun 8 11:22:49 PDT 2015


On 6/8/15 2:10 PM, Jeffrey Tsang wrote:
> The following works:
>
> enum foo(int x) = x + foo!(x - 1);
> enum foo(int x : 0) = 0;
>
> enum bar(T) = cast(T) 3;
> enum bar(T : int) = 4;
>
> Wrap it in a unittest{}, and complaints about multiply defined templates
> hit. Is there a reason for this?

To expand on what Timon said, a unittest block is actually a function 
under the hood.

Try the same thing inside a function and you will get the same issue.

Do this instead (outside of the unit test block):

version(unittest) {
... // same thing
}

-Steve


More information about the Digitalmars-d mailing list