I don't event know who would I sue and I doubt it would stop anyone from using alternative to my binaries once published.
The publisher of the alternatives, and force them to take them down and pay the damages. Of course someone might re-upload them, but software piracy is not new, and whats the difference if someone uploads your binaries illegally, or remakes?
It's more about identification than stealing or copying the code. I don't want third parties to know what my binary actually does to accomplish the task, I don't want them to know what libraries I used etc. There is no need to put "why_do_i_see_this_in_binary_file" as plain text into the binary.
I think programmers should always be quite transparent about the used libraries and technologies. As a programmer you are liable to develop your applications according to the state of the art, and the best way to ensure that is IMHO to provide transparency about the used technologies, libraries and any third party tools you use.
If I get served an application that uses QT4 (which is EOL) I want to know that, because this is clearly a breach of the state of the art requirement. So there should either be a very good reason, or I need to explicetly consent to using this outdated piece library within that codebase.
I should not be required to blindly trust the other party of a trade that they do what they promise, I want to have as much power as possible to verify if the other party fulfills their requirements
I've looked around the net on this subject and there seems to be more against it than for it, exactly for the reasons of prying eyes and bloat.
Whenever someone uses the word "bloat" with respect to code generation I instinctively start rolling my eyes. In the 25 years I own my own computer now, I never ever was in the situation where I ran out of memory because of executable size. Currently I have 2 512GB SSDs. Most of the memory consumption on that are assets, like graphics, sounds, videos, etc. or private documents (music files, pictures, etc.) If I run out of memory, I don't start deleting "bloated" executables, I start deleting those, like the songs I least listen too.
A 1 TB SSD costs 80€, which means that the price per byte is 10^-12€. Bloat is not a problem, except maybe in very fringe cases like microcontroller development, but there I would argue it is better to have special tooling for such special requirements.
Lastly the thing about RTTI, it can only work well if it is enabled by default. If you add RTTI only to type which explicetly enable it, it means you can never use RTTI together with legacy code.
I think there may be a case for having an opt out method, either for specific types or as a global switch, but there is the question if some internal libraries like the RTL may require it, which makes turning it off infeasable.