rango para valores enteros de caracteres en c ++

Estoy leyendoEl lenguaje de programación C ++ y en él Stroustrup afirma que el valor int de un char puede variar de 0 a 255 o -127 a 127, dependiendo de la implementación. ¿Es esto correcto? Parece que debería ser de -128 a 127. Si no, ¿por qué son sus únicos 255 valores posibles en la segunda posibilidad de implementación, no 256?