Workaround for DIP 1005
Daniel N via Digitalmars-d
digitalmars-d at puremagic.com
Thu Feb 9 02:38:24 PST 2017
On Thursday, 9 February 2017 at 05:40:01 UTC, Jonathan M Davis
wrote:
> The import is only listed once, whereas with this technique,
> you have to list it for each symbol. e.g.
>
> auto foo(from!"std.datetime".SysTime st1,
> from!"std.datetime".SysTime st2,
> from!"std.datetime".Duration d);
>
> The result is much more verbose, and if you have several
> symbols that need imports between the return type, parameters,
> and template constraint, you quickly end up with a lot of extra
> text in the middle of your function signatures just because you
> want to tie the imports to the functions that use them.
> - Jonathan M Davis
Thank you for your insightful feedback, I'm currently pressed for
time but I can at least begin to address one of your concerns.
Every proposed solution has some sort of tradeoff, verbosity
could be dealt with for the price of turning a simple function
into a template. In some cases this could be acceptable in others
prohibitive.
auto
foo(alias dt = from!"std.datetime")
(dt.SysTime st1,
dt.SysTime st2,
dt.Duration d)
Our "Implicit Function-Template Instantiation" also unfortunately
bails with default arguments... maybe there is an enhancement
request for that already?
@(from!"std.datetime") almost works too(it would avoid turning
the function into a template), but has other issues.
More information about the Digitalmars-d
mailing list