Размещение новых и нестандартных конструкторов

Можно ли использовать новое размещение С++ для конструкторов с параметрами? Я реализую пользовательский распределитель и хочу, чтобы не было необходимости перемещать функциональные возможности из конструкторов, отличных от по умолчанию, в функцию init.

class CFoo
{
public:
    int foo;
    CFoo()
    {
        foo = 0;
    }

    CFoo(int myFoo)
    {
        foo = myFoo;
    }
};

CFoo* foo = new (pChunkOfMemory) CFoo(42);

Я бы ожидал, что объект типа CFoo будет создан в pChunkOfMemory с использованием второго конструктора. При использовании оператора new am я придерживался только конструкторов по умолчанию?

Решено! Я не #include <new>. После этого вызов placement:: new работал отлично с конструкторами, отличными от по умолчанию.

Ответ 1

Чтобы использовать новое место размещения, вам нужно включить заголовок <new>:

#include <new>

В противном случае формы размещения operator new не определены.