I think, if we'll mangle D `void print(char*);` as C++ `void print(unsigned char*);` we'll create more troubles then advantages. Anyway, C++ standart doesn't define signification of char. And good C++ user shouldn't expect anything in this case. If user want to use signed char, he should declare `signed char` variable.