initializer_list
имеет метод size
, он дает вам информацию, сколько элементов должно быть выделено new
, поэтому это может быть:
vec(initializer_list<double> ilist)
{
elements = ilist.size();
data = new double[ ilist.size() ];
std::copy(ilist.begin(),ilist.end(),data);
}