about std.string.representation
bioinfornatics
bioinfornatics at fedoraproject.org
Tue Nov 19 16:53:34 PST 2013
works as expected
import std.traits : isSomeChar;
import std.range : ElementEncodingType;
import std.stdio;
@safe pure nothrow
template CharEncodingType(Char)
{
alias ET = ElementEncodingType!Char;
static if (is (ET == char)) {
alias CharEncodingType = ubyte;
} else static if (is (ET == wchar)) {
alias CharEncodingType = ushort;
} else static if (is (ET == dchar)) {
alias CharEncodingType = uint;
} else {
alias CharEncodingType = ET;
}
}
void main()
{
string t = "test";
char[] c = "test".dup;
dchar[] dc = "test"d.dup;
wchar[] wc = "test"w.dup;
alias T = CharEncodingType!(typeof(t));
alias C = CharEncodingType!(typeof(c));
alias DC = CharEncodingType!(typeof(dc));
alias WC = CharEncodingType!(typeof(wc));
writeln( typeid(T), ' ', typeid(C), ' ', typeid(DC), ' ',
typeid(WC) );
}
Result
immutable(char) ubyte uint ushort
thanks all
More information about the Digitalmars-d-learn
mailing list