function argument restrictions for templated struct

2015-09-07 Thread Laeeth Isharc via Digitalmars-d-learn

Hi.

Is there a more elegant way to write the template arg 
restrictions for display?


Thanks.


Laeeth

import std.stdio;
import std.traits;

struct Bar(bool test)
{
double a;
static if(test)
double b;
}

void display(T)(T a)
if (__traits(isSame, TemplateOf!(T), Bar))
{
writefln("%s",a);
}

void main(string[] args)
{
auto a=Bar!false(1.0);
auto b=Bar!true(1.0,2.0);
a.display;
b.display;
}


Re: function argument restrictions for templated struct

2015-09-07 Thread anonymous via Digitalmars-d-learn
On Monday 07 September 2015 17:51, Laeeth Isharc wrote:

> Is there a more elegant way to write the template arg 
> restrictions for display?
[...]
> void display(T)(T a)
> if (__traits(isSame, TemplateOf!(T), Bar))
> {
>   writefln("%s",a);
> }

if (isInstanceOf!(Bar, T))


Re: function argument restrictions for templated struct

2015-09-07 Thread Laeeth Isharc via Digitalmars-d-learn

On Monday, 7 September 2015 at 16:27:21 UTC, anonymous wrote:

On Monday 07 September 2015 17:51, Laeeth Isharc wrote:

Is there a more elegant way to write the template arg 
restrictions for display?

[...]

void display(T)(T a)
if (__traits(isSame, TemplateOf!(T), Bar))
{
writefln("%s",a);
}


if (isInstanceOf!(Bar, T))


Thanks !