Udostępnij za pośrednictwem


Błąd kompilatora C2076

nie można użyć listy inicjatora ujętego w nawiasy klamrowe w wyrażeniu nowym, którego typ zawiera wartość "auto/decltype(auto)"

auto Jeśli specyfikator typu pojawia się w sekwencji specyfikatora nowego identyfikatora typu lub identyfikatora new typu wyrażenia, wyrażenie musi zawierać inicjator formularza ( assignment-expression ). Kompilator deduuje identyfikator typu z assignment-expression elementu w inicjatorze. Na przykład:

new auto(42);            // new allocates int
auto c = new auto('a');  // c is of type char*, new allocates char
new (auto*)(static_cast<short*>(nullptr));   // allocates type short*

Aby rozwiązać ten problem, użyj nawiasów, aby ująć wartość inicjowania new wyrażenia.