Was ist der default-Wert für ein std::atomic?

Finde ich, dass in der Praxis mit einer Vielzahl von C++11/C++14-Compiler, ein std::atomic hat einen undefinierten Anfangswert nur, wie es wäre, wenn es ein "raw" - Typ. Das heißt, wir erwarten, dass für die expression

int a;

a kann einen beliebigen Wert haben. Es stellt sich auch heraus, um wahr zu sein, dass für den Ausdruck

std::atomic< int > b;

b können auch einen beliebigen Wert haben. Zu sagen, dass es einen anderen Weg,

std::atomic< int > b;         //b is undefined

ist nicht äquivalent zu

std::atomic< int > b{ 0 };    //b == 0

oder

std::atomic< int > b{};       //b == 0

weil in den letzten beiden Fällen b initialisiert wird auf einen bekannten Wert.

Meine Frage ist einfach: wo in der C++11 oder C++14-spec ist dieses Verhalten dokumentiert?

InformationsquelleAutor OldPeculier | 2016-03-30
Schreibe einen Kommentar