возможно ли использовать std::fill
для инициализации массива не POD-типов?
В документации сказано, что std::fill
использует operator=
для инициализации массива, а не для построения копии размещения. Оператор присваивания, однако, на самом деле не имеет возможности освободить текущую память, когда он вызывается в неинициализированном пространстве, насколько я вижу.
Пример:
struct NonPod
{
std::string myStr;
};
NonPod arr[10];
NonPod prototype;
NonPod * ptr = &arr[0];
std::fill_n(ptr, 10, prototype);