In general, yes, moving towards attribute inference for ordinary functions rather than just templates is where we want to go. The reason it isn't done currently is because it makes .di declarations incompatible with the .d definitions.