Is there any particular reason that structs and unions can't implement interfaces? If that was possible, template conditions could become much simpler for a variety of cases, such as for checking if something is a particular type of range or container. Thoughts?