www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - template typeing issues

reply BCS <ao pathlink.com> writes:
Is there a better way to get T[] and T[5] to play nice in a template?

void main()
{
	char[] c = "world";
	t("hello", c);
}

void t(T, U)(T a, U  b)
{
	static assert(is(T : U) || is(U : T));
}

my first attempt was this:

void t(T)(T a, T  b) 
{
}

But it wouldn't instance
Sep 14 2007
parent reply Downs <default_357-line yahoo.de> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

BCS wrote:
 
 Is there a better way to get T[] and T[5] to play nice in a template?
 
 void main()
 {
     char[] c = "world";
     t("hello", c);
 }
 
 void t(T, U)(T a, U  b)
 {
     static assert(is(T : U) || is(U : T));
 }
 
 my first attempt was this:
 
 void t(T)(T a, T  b) {
 }
 
 But it wouldn't instance
 
 
Here you go! $ cat test8.d; echo -----; gdc test8.d -o test8 && ./test8 import std.stdio; void main() { char[] c="world"; t("hello", c); } void t(T)(T[] a, T[] b) { writefln(a, " ", b); } - ----- hello world --downs -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFG68SVpEPJRr05fBERAoDtAJ9drqNQoWh921jLNcvm43+FSJqMqQCeJIgD kTn597lWrax0P7x/ZJok42U= =yje6 -----END PGP SIGNATURE-----
Sep 15 2007
parent BCS <ao pathlink.com> writes:
Reply to Downs,

 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
 BCS wrote:
 
 Is there a better way to get T[] and T[5] to play nice in a template?
 
 void main()
 {
 char[] c = "world";
 t("hello", c);
 }
 void t(T, U)(T a, U  b)
 {
 static assert(is(T : U) || is(U : T));
 }
 my first attempt was this:
 
 void t(T)(T a, T  b) {
 }
 But it wouldn't instance
 
Here you go! $ cat test8.d; echo -----; gdc test8.d -o test8 && ./test8 import std.stdio; void main() { char[] c="world"; t("hello", c); } void t(T)(T[] a, T[] b) { writefln(a, " ", b); } - ----- hello world
t(4, 5); // fails for non arrays The better way to describe what I need is: I need a template function that takes two args, whenever there is a type that both can implicitly convert to the template will implicitly instance for it.
Sep 15 2007