Zuweisung eines Objekts an Static Member einer Klasse

Bei der Zuweisung eines Objekts an Static Member einer Klasse ist Vorsicht geboten!

Folgende Schreibweise ist zwar C++ konform:

std::atomic<uint64_t>	connection::m_next_free_connhandle = 1;

…für GCC muss jedoch wie folgt umgestellt werden:

std::atomic<uint64_t>	connection::m_next_free_connhandle(1);

GCC ruft sonst nicht den Konstruktor für den Static Member auf, sondern den Konstruktor für ein temporäres Objekt + den copy-Konstruktor. Und der ist bei manchen Klassen nicht vorhanden (selbst wenn, wäre das überflüssige Mehrarbeit).


Stand: 12.02.2016
: Jürgen Kreick

EOF