I tried this style, but it doesn't scale well. If you forget to define a constructor or call it incorrectly, the error message will list all init/new overloads, and that can easily be a hundreds or even thousands line long error message. I bet it also makes compilation somewhat slower.
- Constructors via typedesc[] arguments Renesac