D - how do I use template( char T : 'x', P ) ?
I found that extern( foo ) instance .... did not migrate the linkage to the template so not wanting to use an enum, first I tried template( char[] T : "Windows", R ) but that does not work :( tet5.d(2): template base(char[] : "W",R) integral type expected for value-parame ter, not char[] then I tried this template base( char T : 'W', R ) { extern (Windows) alias R (*fp)(); fp func; } template base( char T : 'C', R ) { extern (C) alias R (*fp)(); fp func; } const char WWWW = 'W'; instance base( WWWW, int ) other; instance base( 'W', int ) te; extern( Windows ) alias int (*wfp)(); extern( Windows ) alias te.fp awfp; int myd_func(){ return 2; } int main( char[][] args ) { wfp wfunc; awfp awfunc; awfunc = &myd_func; te.func = &myd_func; wfunc = &myd_func; // only windows fp return 0; } the templates compile .... BUT there is no way to create an instance on them instance base("W",int) does not match any template declaration with both 'W' or a const Mike.
Feb 08 2003
"Mike Wynn" <mike.wynn l8night.co.uk> wrote in message news:b245qp$1eud$1 digitaldaemon.com...I found that extern( foo ) instance .... did not migrate the linkage tothetemplateRight. It compiles the template in the context it was defined in, not the context of the instance.so not wanting to use an enum, first I tried template( char[] T :"Windows",R ) but that does not work :( tet5.d(2): template base(char[] : "W",R) integral type expected for value-parame ter, not char[]Right, only integral values supported for value parameters.then I tried this template base( char T : 'W', R ) { extern (Windows) alias R (*fp)(); fp func; } template base( char T : 'C', R ) { extern (C) alias R (*fp)(); fp func; } const char WWWW = 'W'; instance base( WWWW, int ) other; instance base( 'W', int ) te; extern( Windows ) alias int (*wfp)(); extern( Windows ) alias te.fp awfp; int myd_func(){ return 2; } int main( char[][] args ) { wfp wfunc; awfp awfunc; awfunc = &myd_func; te.func = &myd_func; wfunc = &myd_func; // only windows fp return 0; } the templates compile .... BUT there is no way to create an instance on them instance base("W",int) does not match any template declaration with both 'W' or a constI'll log that as a compiler bug.
Mar 11 2003