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.


Reply via email to