Ist es möglich, ein Array von Nicht-PODs mit einer neuen Operator- und Initialisierungssyntax zu initialisieren?

Ich habe gerade gelesen und verstandenIst es möglich, ein Array in C ++ 11 mit dem neuen Operator @ zu initialisiere, aber es löst mein Problem nicht ganz.

Dieser Code gibt mir einen Kompilierungsfehler in Clang:

struct A
{
   A(int first, int second) {}
};
void myFunc()
{
   new A[1] {{1, 2}};
}

Ich habe erwartet, dass {{1, 2}} das Array mit einem einzelnen Element initialisiert, das wiederum mit den Konstruktorargumenten {1, 2} initialisiert wurde, aber ich erhalte den folgenden Fehler:

error: no matching constructor for initialization of 'A'
   new A[1] {{1, 2}};
            ^
note: candidate constructor not viable: requires 2 arguments, but 0 were provided
   A(int first, int second) {}
   ^
note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0 were provided
struct A
       ^

Warum funktioniert diese Syntax nicht?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage