struct POD { int i, j; };
class A {
POD m_pod;
public:
A() : m_pod({1,2}) {} // error
A() : m_pod(static_cast<POD>({1,2})) {} // error
A() : m_pod((POD) {1,2}) {} // ok!
};
Ich sehe das in einem alten Produktionscode zusammengestellt mit g++34
, bis dahin kenne ich diese Funktion nicht.
Ist es eine g++ spezifische Funktion? Wenn nicht, warum wird Typecasting benötigt und das ist auch nur C-Style-Cast erlaubt?Warum ist eine C-Style-Typisierung beim Initialisieren von POD-Daten in der Initialisierungsliste zwingend erforderlich?
Meine Vermutung ist, '{1,2}' ist kein POD-Typ und ein 'reinterpret_cast' geschieht. –