digitalmars.D.learn - template typeing issues
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
-----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 instanceHere 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
Reply to Downs,-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 BCS wrote: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.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 instanceHere 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
Sep 15 2007