Justin Johansson wrote:
In a templated class (D1.0) along lines ...

class Foo(T) {
//..
  static T bar() { return T.init; }
//..
}

Foo!(int).bar() returns 0 and Foo!(char[]).bar() returns nil.

I'd much prefer (at least for my purposes) that (char[]).init returned an empty 
string rather than effectively a null pointer.  Is there a convenient solution 
for this, e.g. by specializing just the bar method of class Foo when T is 
char[], or by some other means?

Maybe this type of question best be asked on D.learn, but I do wonder if an 
empty string is a more reasonable initializer for char[] .. well maybe not .. I 
don't know .. I yield to your sensibilities.

Thanks to all.


You could use a custom type, which would solve your .init problem:
typedef string myString = "";

Or you could specialize your bar():

static T bar() {
    static if(isSomeString!T)
        return "";
    else
        return T.init;
}

I myself favor a null initializer, since char[] is a reference type, not a value type, it only makes sense to initialize it to a null reference.

Reply via email to