14.8.1/6:
"... But when a function template with explicit template arguments
is used, the call does not have the correct syntactic form unless
there is a function template with that name visible at the point of
the call...."
That is just the oddest rule! Going back to my original example, I could make it work just by adding an arbritary declaration of at_c(),
which doesn't even need to be defined anywhere. If such a namespace-enabling
template were to be removed, thus breaking the look-up used in my 'first()' function it would be a horrible bug to find!