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!
};
Lo vedo in un vecchio codice di produzione compilato con g++34
, fino a quel momento non conosco questa funzione.
È una funzionalità specifica di g++? In caso contrario, perché è necessario il typecasting e questo è consentito solo al cast in stile C?Perché un typecasting in stile C è obbligatorio durante l'inizializzazione di un dato POD nell'elenco degli inizializzatori?
La mia ipotesi è '{1,2}' non è un tipo di POD e un 'reinterpret_cast' sta accadendo. –