some template questions
Daniel Keep
daniel.keep.lists at gmail.com
Tue May 23 01:42:27 PDT 2006
BCS wrote:
> In article <e4ub7s$2v7l$1 at digitaldaemon.com>, Don Clugston says...
>> BCS wrote:
>>> Two questions:
> [...]
>> It doesn't work because D doesn't have array literals yet.
>
> ???
>
> this works (I was using it tonight):
>
> struct fo {int i}
> fo[] bar = [ {i:5}, {i:6} ];
>
> --------------------------
>>> template hang()
>>> {
>>> static assert(false);
>>> const int hang = hang!();
>>> }
> [...]
>> -----
>> If that it fails for you, enter it in Bugzilla as a regression or
>> Linux-only bug.
>>
>
> @#$%@ faulty memory (the gray wet stuff, not the silicon suff). Try:
>
> template hang(int i)
> {
> static assert(0);
> const int hang = hang!(i-1);
> }
>
> const int x = hang!(1);
>
> this hangs 0.157 on Linux and XP (now bug #152)
>
>
> OK, next question: has anyone done a sort?
>
> static assert("abc" == sort!("bca"));
>
Here you go:
#
# template insertChar(char[] chr, char[] str)
# {
# static if( str.length == 0 )
# const char[] insertChar = chr;
# else static if( chr[0] <= str[0] )
# const char[] insertChar = chr ~ str;
# else
# const char[] insertChar = str[0..1] ~ insertChar!(chr, #
str[1..$]);
# }
#
# template sort(char[] str)
# {
# static if( str.length == 0 )
# const char[] sort = "";
# else
# const char[] sort = insertChar!(str[0..1], sort!(str[1..$]));
# }
#
# template slice(char[] str)
# {
# const char[] slice = str[1..$-1];
# }
#
# pragma(msg, `sort!("bsakdjfyiu4r") == ` ~ sort!("bsakdjfyiu4r"));
#
# void
# main()
# {
# }
#
Tested it just then :)
-- Daniel Keep
--
v1sw5+8Yhw5ln4+5pr6OFma8u6+7Lw4Tm6+7l6+7D
a2Xs3MSr2e4/6+7t4TNSMb6HTOp5en5g6RAHCP http://hackerkey.com/
More information about the Digitalmars-d-learn
mailing list