Probabile BUG del compilatore ...

leo72:

nid69ita:
il secondo è 6 e quindi viene intepretato come int

E' quanto ho pensato anch'io ieri, facendo i test quando Guglielmo mi ha informato della cosa. Però suona strano perché un numero è una costante e come tale con che criterio viene scelto il tipo (u)int16 piuttosto che il tipo (u)int8?

Premetto che non sò quali algoritmi un compilatore segua per decidere quale funzione overloaded scelga.
Credo che il problema principale non sia tanto sul 8 o 16. La cifra 6 è ambigua anche in questo caso perchè potrebbe essere considerata 16 o 8 e non ci sarebbero problemi. Secondo me il vero dilemma è se considerarla signed o unsigned, nella lista di funzioni candidate è quella la vera discriminante per fare una scelta.
Per questo mi dicevo curioso di sapere chissà che algoritmi hanno implementato per queste scelte "quasi" intelligenti. Logico che non ho voglia di leggermi i sorgenti del gcc ne credo qualcuno abbia voglia di farlo. :smiley: