On 6/07/2016 12:08, Billy O'Neal (VC LIBS) wrote:
It is "better" as in it is "what the standard says". In g, f is not a dependent name. That means it gets resolved when the template is parsed, f(double) has been declared.
That seems like a defect in interpretation or in the standard in that case. "f" is not dependent but f(<args that use T>) is. Given that there is no context (at least when known to be used as a callable) in which "f" by itself is a sensible identifier (if you try to take a pointer to it, in the presence of overloads you have to explicitly supply the intended argument types anyway), this just seems like it's trying to make life difficult for the programmer for no good reason. Again though I assume I'm missing something.