Render [empty links]() as <u> (or <a>)?

This is true only in HTML4.
In HTML5, <a> can not represent an anchor; it is either a link or a link placeholder.

I certainly don’t dispute that <a href=""> is a valid link, nor that this behavior is explicitly specified, presently. But I disagree that this is a “consistent” behavior, since the treatment of empty elements is currently all over the map.

Take collapsed reference links:

A collapsed reference link consists of a link label that matches a link reference definition elsewhere in the document, optional whitespace, and the string . The contents of the first link label are parsed as inlines, which are used as the link’s text. The link’s URI and title are provided by the matching reference link definition. Thus, [foo] is equivalent to [foo][foo].

But what if []: is used as a reference link definition, or if the definition [bar]: is empty?
Try a few of these on for size (Babelmark 2):
[]: foo [bar][][]: [bar][][bar]: [bar][][]: foo [bar]: bar [bar][] []: foo [bar]: [bar][]

As resolving these types of ambiguities is expressly the purpose of this standard, I would think the treatment of empty inline links should be up for discussion as well.

Again, note that <a> is not an anchor in HTML5. It is specified as “a placeholder for where a link might otherwise have been placed”, which is why I thought it might be a decent way to implement underlines, i.e., “a link without a link”.

I’m not really heavily invested in this idea, I just thought I’d throw it out there since there are so many requests for a way to underline text. But I think this is a good example why explicitly specifying which HTML revision is being targeted is pretty important.

And, I think the []: stuff might warrant opening an issue on Github, no?