Моделирование new [] с конструктором аргументов

Если я не изменяю какую-либо статическую переменную внутри конструктора аргументов, ниже приведен правильный способ имитации new T [N] (x, y); (новый массив с аргументами)?

template<typename T>
void* operator new [] (size_t size, const T &value)
{
  T* p = (T*) malloc(size);
  for(int i = size / sizeof(T) - 1; i >= 0; i--)
    memcpy(p + i, &value, sizeof(T));
  return p;
}

Использование будет,

struct A
{
  A () {}  // default
  A (int i, int j) {} // with arguments
};

int main ()
{
  A *p = new(A(1,2)) A[10];  // instead of new A[10](1,2)
}
5
задан iammilind 20 May 2011 в 11:10
поделиться