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 enums.

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

NameDescription
Attribs The return value of __traits(getParameterStorageClasses)

Returns

The bitwise OR of the equivalent ParameterStorageClass enums.

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

Boost License 1.0.