> `char` is a type which represents a abstract character, not number, primarily. Thus, singned/unsigned attribute make sense only inside translation unit. (usually)

Not from the compiler's perspective.  Then again, most (all?) x86 C++ compilers default to signed char, so this will probably 'work' better than the alternative.