View source code
Display the source code in std/traits.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Enum member std.traits.extractParameterStorageClassFlags
Convert the result of __traits(getParameterStorageClasses)
to ParameterStorageClass
enum
s.
enum extractParameterStorageClassFlags(Attribs...)
= ()
{
auto result = ParameterStorageClass .none;
static if (Attribs .length > 0)
{
static foreach (attrib; Attribs)
{
final switch (attrib)
{
with (ParameterStorageClass)
{
case "scope":
{
result |= scope_;
break;
}
case "in":
{
result |= in_;
break;
}
case "out":
{
result |= out_;
break;
}
case "ref":
{
result |= ref_;
break;
}
case "lazy":
{
result |= lazy_;
break;
}
case "return":
{
result |= return_;
break;
}
}
}
}
if (result == (ParameterStorageClass .ref_ | ParameterStorageClass .return_))
result = ParameterStorageClass .return_;
}
return result;
}
();
Parameters
Name | Description |
---|---|
Attribs | The return value of __traits(getParameterStorageClasses) |
Returns
The bitwise OR of the equivalent ParameterStorageClass
enum
s.
Example
static void func(ref int ctx, out real result);
enum param1 = extractParameterStorageClassFlags!(
__traits(getParameterStorageClasses, func, 0)
);
static assert(param1 == ParameterStorageClass .ref_);
enum param2 = extractParameterStorageClassFlags!(
__traits(getParameterStorageClasses, func, 1)
);
static assert(param2 == ParameterStorageClass .out_);
enum param3 = extractParameterStorageClassFlags!(
__traits(getParameterStorageClasses, func, 0),
__traits(getParameterStorageClasses, func, 1)
);
static assert(param3 == (ParameterStorageClass .ref_ | ParameterStorageClass .out_));
Authors
Walter Bright,
Tomasz Stachowiak (isExpressions
),
Andrei Alexandrescu,
Shin Fujishiro,
Robert Clipsham,
David Nadlinger,
Kenji Hara,
Shoichi Kato
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.