Looks like how a lot of languages already work out of the box. E.g. whenever I create a data type in Julia I automatically have such a constructor.
Static languages such as Go and C already essentially let you do this through initialization through braces.