My initial implementation of experimental::any was too dumb, it assumed you could just swap the bytes of _Storage, and return it from functions like any POD type, but if the _Storage object contains a non-trivially-copyable object internally (not on the heap) then it's wrong to treat it as a POD. This patch makes the _Storage object non-copyable and fixes all the uses of it. Tested powerpc64le-linux, committed to trunk.