Gegeben diesen Code,
%Vor% ist der Typ von sum
implementation-defined? Mein Lesen des C ++ 11 Standards sagt ja:
sum
int ist. sum
unsigned int. Wenn die obige Analyse legitim ist, bedeutet dies, dass die Verwendung von auto
zum Deklarieren von Variablen, die mit arithmetischen Ausdrücken für integrierte Typen initialisiert wurden, zu implementierungsdefinierten Ergebnissen führen kann. Ich nehme an, es würde viele Programmierer überraschen, dass der Typ von sum
oben nicht vollständig vom Standard bestimmt wird.
Ist meine Argumentation legitim?
Der Typ ist implementierungsspezifisch, aber nicht implementierungsdefiniert. Implementierungsdefiniert bedeutet, dass die Implementierung dokumentieren muss, was sie tut.