Il problema non è se signed o unsigned. Perché sai fai il cast esplicito ad entrambi i tipi ad 8 oppure a 16 bit, il compilatore non dà errore perché giustamente ha già i 2 casi overloadati. Ma nel caso di un int8 e di un numero, con che criterio stabilisce che una COSTANTE NUMERICA è int16?