Hi All,

What is causing the error in the code snippet below?

```d
void replaceRight(S)(ref S[] str, S[] slc)
{
  size_t len1 = slc.length,
         len2 = str[len1..$].length;
  assert(len1 == len2);
  str[len1..$] = slc;
}

import std.stdio;

void main()
{
  // example one:
  char[] str1 = "cur:€_".dup;
  str1.length.write(": "); // 8:
  str1[4..$].writefln!"[%s]"; // [€_]
    
  str1.replaceRight("$  _".dup);
  str1.writefln!"[%s]"; // [cur:$  _]

  // example two:
  dchar[] str2 = cast(dchar[])"cur:€_"d;
  str2.length.write(": "); // 6:
  str2[4..$].writefln!"[%s]"; // [€_]
  
  str2.replaceRight(cast(dchar[])"$ _"d);
  str2.writefln!"[%s]"; // Error--^
} /* Prints:
  8: [€_]
  [cur:$  _]
  6: [€_]
  Error: program killed by signal 11
*/
```
Why does replaceRight() work fine with a char array, but not a dchar array? Whereas, rvalue and lvalue lengths are equal to each other!

SDB@79
  • dChar Error Salih Dincer via Digitalmars-d-learn
    • Re: dChar E... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
      • Re: dCh... Salih Dincer via Digitalmars-d-learn
        • Re:... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
    • Re: dChar E... novice2 via Digitalmars-d-learn
      • Re: dCh... Salih Dincer via Digitalmars-d-learn
        • Re:... matheus via Digitalmars-d-learn
          • ... Salih Dincer via Digitalmars-d-learn
            • ... matheus via Digitalmars-d-learn
              • ... Ali Çehreli via Digitalmars-d-learn
                • ... matheus via Digitalmars-d-learn

Reply via email to