Variable arguments with file and line information?
Chris Nicholson-Sauls
ibisbasenji at gmail.com
Sun Nov 17 04:06:11 PST 2013
On Saturday, 16 November 2013 at 23:55:47 UTC, Jonathan M Davis
wrote:
>
> If you're dealing with variadic arguments, then making the file
> and line number
> be template arguments is really your only solution. However, I
> must warn you
> that that will result in a new template instantation _every_
> time that you use
> error, because the file and line number are always going to be
> different unless
> you call the function multiple times on the same line). So,
> this approach is
> pretty much guaranteed to generate template bloat. That may be
> acceptable, but
> I'd personally suggest trying to find a different way to go
> about solving the
> problem unless error is not going to be called very often -
> e.g. force the
> caller to call format when creating the message rather than
> supporting
> variadic arguments directly in error.
>
> - Jonathan M Davis
Something I'm wondering: if one were to split the implementation
along these lines:
void error (string file = __FILE__, size_t line = __LINE__,
Args...) (string msg, Args args) {
errorImpl(file, line, msg, args);
}
void errorImpl (Args...) (string file, size_t line, string msg,
Args args) {...}
What are the chances of the middle-man function being inlined,
thus cutting down on template bloat in the final product? I
should hope it would be practically guaranteed.
More information about the Digitalmars-d-learn
mailing list