Sorting char arrays

Ali Çehreli acehreli at yahoo.com
Mon Mar 12 10:33:35 PDT 2012


On 03/12/2012 08:06 AM, Magnus Lie Hetland wrote:
 > On 2012-03-12 13:56:15 +0000, bearophile said:
 >
 >> It's not a bug, char is meant to be a UTF-8.
 >
 > Right.
 >
 >> Two workarounds:
 >
 > Thanks. I'm doing the sorting in a template, so this won't work -- but I
 > guess I just can't use char as a type parameter to my template either,
 > then :)
 >

You can use isNarrowString to either disallow or provide special 
implementation for narrow strings (char[] and wchar[]):

import std.traits;

void foo(T)(T t)
     if (!isNarrowString!T)
{
     // ...
}

void bar(T)(T t)
{
     static if (isNarrowString!T){
         // ...

     } else {
         // ...
     }
}

void main()
{
     char[] sc;
     dchar[] sd;
     // foo(sc);     // <-- compilation error
     foo(sd);

     bar(sc);
     bar(sd);
}

Ali



More information about the Digitalmars-d-learn mailing list