www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - function argument restrictions for templated struct

reply "Laeeth Isharc" <spamnolaeeth nospamlaeeth.com> writes:
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;
}
Sep 07 2015
parent reply anonymous <anonymous example.com> writes:
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))
Sep 07 2015
parent "Laeeth Isharc" <laeethnospam nospam.laeeth.com> writes:
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 !
Sep 07 2015