I've been wondering myself, but it seems to work as it is just fine.
It is a union that stores only ints -- when saved it is referenced to as "amount", basically the direction is stored in the same piece of memory where fuel tanks store the amount of fuel.
I have no idea what C++ standard has to say about setting union property under one name and then accessing it under another though.