Your compiler is smart: it is telling you that you are doing something that is totally unnecessary when you destruct an 'Element' -- it isn't saying it won't do it -- it is just saying that it isn't going to inline it, because it would bloat your code with a lot of unnecessary doings.
I'm just guessing: local variables/objects are destroyed when a function returns, and data is destroyed on that line (the compiler calls the destructor).
Nothing to do with original question but InitTable function seems a bit strange to me.
It is called with a reference to a vector of elements vector<Element>& table.
we fill this vector with (I assume) all the elements of the periodic table.
We then copy it to another vector as the return value of the function ( return table)