syntax sugar: std.path::buildPath instead of from!"std.path".buildPath

ZombineDev via Digitalmars-d digitalmars-d at puremagic.com
Wed Feb 15 16:37:00 PST 2017


On Thursday, 16 February 2017 at 00:08:12 UTC, Walter Bright 
wrote:
> On 2/15/2017 12:31 PM, Jonathan M Davis via Digitalmars-d wrote:
>> It's one of those features that I was surprised when you 
>> couldn't do it.
>
> It was an oversight. We just never thought of it.

What do you think about generalizing this feature to allow 
introducing template value parameters without default value, i.e.:

// Note: `beg` and `end` have no default value

auto bounded
     (auto beg, auto end, auto onErrPolicy = Enforce("Value out of 
range"), T)
     (T value)
{
     return Bounded!(beg, end, Policy)(value);
}

struct Enforce
{ this(string) { /* */ } }

int tmp;
readf("%s", &x);

enum policy = Enforce("User age must be between 18 and 150");
auto userAge = bounded!(18, 150, policy)(tmp);

"Declaring non-type template arguments with auto" is also coming 
to C++17: 
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0127r1.html

BTW, shouldn't we use `enum`, instead of `auto`, since everywhere 
else `enum` means guaranteed to be computed at compile-time 
whereas `auto` means the opposite?


More information about the Digitalmars-d mailing list