Passing variadic template parameters AND default call site __FILE__, __LINE__ template parameters.
realhet
real_het at hotmail.com
Wed May 28 11:04:06 UTC 2025
On Wednesday, 28 May 2025 at 10:13:43 UTC, realhet wrote:
> On Tuesday, 27 May 2025 at 21:16:57 UTC, monkyyy wrote:
>> On Tuesday, 27 May 2025 at 21:07:51 UTC, realhet wrote:
I've found a way to eliminate !() by using a function:
```d
struct LOCATION_t2
{
string location;
string toString() const => location;
}
auto LOC2(string FILE=__FILE__, size_t LINE=__LINE__)
=> LOCATION_t2(FILE~'('~LINE.text~",1)");
pragma(msg, LOC2); //LOCATION_t2("onlineapp.d(28,1)")
pragma(msg, LOC2.text); //onlineapp.d(29,1)
pragma(msg, i"$(LOC2)"); //AliasSeq!(InterpolationHeader(),
InterpolatedExpression(), LOC2, InterpolationFooter()) //!no line
number
pragma(msg, i"$(LOC2)".text); //onlineapp.d-mixin-31(31,1)
//!!line number is still there!
```
Also encapsulating it in a struct, so it's safer because
(LOCATION_t2 != string).
I love this LEGO set :]
More information about the Digitalmars-d-learn
mailing list