Capturing caller's file/line number in variadic template functions
Yuri Gorobets
yuri.gorobets at gmail.com
Fri Mar 16 17:52:40 PDT 2012
On Friday, 16 March 2012 at 18:21:54 UTC, H. S. Teoh wrote:
>
> void checkConsistency(T...)(T args, string file=__FILE__,
> size_t line=__LINE__) { ... }
>
> but this causes compile errors because when C==string, then the
> call is
> ambiguous.
>
Does it make sense to consider to add a new type to hold the file
name and line? So the types clash can be avoided:
class file_line
{
this(string f=__FILE__, size_t ln=__LINE__)
{
file = f;
line = ln;
}
string file;
size_t line;
};
void checkConsistency(T...)
(T args, file_line pos = new file_line) {...}
checkConsistency!(A,B,C)(a,b,c);
Seems to work, but requires an explicit checkConsistency call - I
didn't manage to make it implicit.
More information about the Digitalmars-d-learn
mailing list