I saw this question Does requiring users to accept the GPL before using GPL-licensed software violate the GPL? That states that the GPL license does not apply any restrictions on the user. If that is the case what is there to stop a user from reverse engineering a GPL program and using the reverse engineered code in a non GPL license program?
First, note that the Q&A you link says the "GPL does not place any obligations on the user of" some software. This speaks particularly about a "user" in contrast to a "distributor" or "modifier" of a piece of a software: a "user" merely executes the software as received by some upstream distributor.
Second, you are free to reverse engineer a GPL-licensed binary, though if the distributor did things properly, you should also have the source available, so reverse engineering would get you the same or worse results from what you're already free to do.
If you mean "reverse engineering" in the sense of a clean-room reimplementation:
This will allow you to write code not covered by the GPL, because clean-room design avoids creating a derivative work under copyright law. This is because the author in the clean-room process works strictly from a behavioral specification (which is a procedure, not covered by copyright) constructed by others. People have been performing clean-room reimplementation for decades to produce new, identically-behaving code that isn't based on the material of the original work.
Note that a legally rigorous defense around clean-room design is difficult to construct practically. You must adhere strictly to a separation of behavior and expression, and you must document your methodology and specifications thoroughly enough to satisfy a court that the author of the new work had no exposure to the existing work.
If you mean "reverse engineering" in the sense of running the binary through a decompiler:
If you believe that reverse engineering a GPL'd binary without looking the source will exempt you from a copyleft obligation to share your changes under the GPL, this is not so. Your reverse engineered source code is still a derivative under copyright law (just as, e.g., a machine translation of a human-language novel would be) so GPL requirements apply to distribution of the derivative work, whenever you choose to distribute it.
What mainly prevents users from-reverse engineering GPLed programs is that they have the source code, so they can just read that instead of reverse-engineering. :)
Whether you read the source code, or reverse engineer machine code, and then produce a copy of that code, that copying activity is not a form of use of the program. It may be deemed to be reproduction: you're copying something from the program.
If you're copying something from either the source or compiled form of a GPLed program, you're making a derived work which is still licensed under the GPL. If you redistribute it without reproducing the copyright notice, and obeying all the redistribution rules, it is infringing.
The compiled code is a derived work of the source code, and is itself copyrighted and under the same GPL. You cannot evade copyright by working with binary code.
Being free to use a GPLed program in any manner doesn't amount to being able to redistribute it, or any portion of it, under a different license and authorship.