enum __c_wchar_t : wchar; alias wchar_t = __c_wchar_t; immutable(wchar_t)[] a = "somestring"; const(wchar_t)[] b = "somestring"; immutable(wchar_t)* c = "somestring"; const(wchar_t)* d = "somestring"; string foo = "foo"; static assert(!__traits(compiles, { immutable(wchar_t)[] bar = foo; } )); static assert(!__traits(compiles, { const(wchar_t)[] bar = foo; } )); static assert(!__traits(compiles, { immutable(wchar_t)* bar = foo; } )); static assert(!__traits(compiles, { const(wchar_t)* bar = foo; } )); // https://issues.dlang.org/show_bug.cgi?id=17141 static assert(is(typeof(true ? char.init : char.init) == char)); static assert(is(typeof(true ? char.init : wchar.init) == dchar)); static assert(is(typeof(true ? char.init : dchar.init) == dchar)); static assert(is(typeof(true ? wchar.init : wchar.init) == wchar)); static assert(is(typeof(true ? wchar.init : dchar.init) == dchar)); static assert(is(typeof(true ? dchar.init : dchar.init) == dchar)); enum cenum : char { a } enum wenum : wchar{ b } enum denum : dchar{ c } static assert(is(typeof(true ? char.init : cenum.init) == char)); static assert(is(typeof(true ? wchar.init : cenum.init) == dchar)); static assert(is(typeof(true ? char.init : wenum.init) == dchar)); static assert(is(typeof(true ? dchar.init : wenum.init) == dchar)); static assert(is(typeof(true ? cenum.init : wenum.init) == dchar));