Variadic templates
Reiner Pope
reiner.pope at REMOVE.THIS.gmail.com
Fri Nov 3 03:16:05 PST 2006
> Does that handle a variadic function in an interface, too?
>
> interface ILogger
> {
> void log_msg(char[] fmt, ...);
> }
>
> --bb
No, I don't think it does. You could get away with this, though:
interface ILogger
{
void log_msg_impl(char[] fmt, varargData data);
}
void log_msg(T...) (ILogger logger, char[] fmt, T t)
{
auto data = getVarargData(t);
logger.log_msg_impl(fmt, data);
}
If the implicit-this syntax sugar we have for arrays (which allows
"foo".toupper) was allowed for all types, then this discrepancy would
disappear, and you could write the call as if were a member function:
myLogger.log_msg("foo: %d", foo);
as opposed to
log_msg(myLogger, "foo: %d", foo);
Cheers,
Reiner
More information about the Digitalmars-d
mailing list