But when used in some well defined manner it will trigger the compiler to do some type manipulation.
"Pretend it works somehow" does not make sense. It has to work without
pretending. And you have to explain how it will work, with detailed rules.
Otherwise, we could have a pretend standard and a pretend compiler.
I have detailed the greatest part of the necessary rules.
I cannot find all the obscure corner cases in one sitting, otherwise i don't need to discuss it in threads.
And pretending that something works is a logical way to find errors.
1- assume A is correct
2- Use it
3- if it give contradiction result, then your assumption is wrong
4- correct it
5- then repeat from 1.
That's how usually we build softwares.