Я хочу пройтись по этому вектору и вызвать конструктор значения для объекта
Объект уже был построен по умолчанию (0.0, 1.0), и вы не можете вызватьопять конструкторОднако вы можете назначить новый дистрибутив, разыменовав свой итератор и присвоив ему:
*it = std::uniform_real_distribution<double>(0.0,1.0);
или используя диапазон для цикла:
for(auto &dist : distribution_pos) {
dist = std::uniform_real_distribution<double>(0.0,1.0);
}
Если вы действительно хотел бы сохранить исходный дистрибутив (возможно, чтобы сохранить его внутреннее состояние), вы можете заменить его объект параметра:
for(auto &dist : distribution_pos) {
// get the current parameters
auto params = dist.param();
// create new and replace the old parameters
dist.param(
std::move(
std::uniform_real_distribution<double>::param_type(
params.a(), params.b()
)
)
);
}