importing std.array: empty in a struct messes things up
Dennis
dkorpel at gmail.com
Sun Mar 4 19:17:42 UTC 2018
I was making a stack interface for an array:
```
struct Stack(T) {
import std.array: empty;
T[] stack;
alias stack this;
}
void main()
{
Stack!int stack;
bool x = stack.empty;
}
```
My expectation is that you can now call `empty` on a stack
instance since I imported it in the struct, but it gives this
error:
```
Error: cannot resolve type for stack.empty(T)(auto ref scope
const(T) a) if (is(typeof(a.length) : size_t) || isNarrowString!T)
```
When adding this method to the struct:
```
bool empty() {return stack.empty;}
```
I get this confusing error:
```
Error: expression stack.empty is void and has no value
```
I can solve this by importing std.array: empty in the method
instead of the struct, but for my understanding of import
statements in structs I'd appreciate if someone explained what
these errors mean and why exactly they occur.
Thanks.
More information about the Digitalmars-d-learn
mailing list