If this behavior is indeed intentional, it should at least be covered in the spec.
I know the template part is intentional (including the identifier thing, function names are allowed to share names with global identifiers and override them locally), though indeed, it giving void I think is a bug. Just in that category where nobody cares enough to put a lot of effort into it.
