2016-05-20 20 views
7

Il codice di seguito:inizializzazione di un array dinamico di costruibile non predefinita oggetti

struct Foo 
{ 
    Foo(int){} // no default constructor 
}; 

int main() 
{ 
    Foo* pFoo = new Foo[2]{1,2}; // OK in g++, fails in clang++! 
    delete[] pFoo; 
} 

compiles in gcc, ma fails in clang. Il codice sopra sintatticamente è corretto?

+0

Nemmeno wandbox. http://melpon.org/wandbox/permlink/jS7mx3XTG2xjDqb9 –

+3

Proprio quando pensavo di poterci fidare dei nostri strumenti. Penso che tu abbia rotto uno di loro. Vedi, questo è il motivo per cui non possiamo avere dei simpatici compilatori. – wally

+0

Se si utilizza C++ 11, passare a 'std :: vector' e utilizzare il suo costruttore che accetta un * braced-init-list * come input:' std :: vector pFoo = {1, 2}; ' o forse 'std :: vector pFoo = {Foo (1), Foo (2)};' –

risposta

Problemi correlati