is ref inout redundant in: ref inout(T) opIndex(size_t index)

mw mingwu at gmail.com
Mon Jun 19 18:19:18 UTC 2023


Hi, I just saw this line:

https://github.com/dlang/dmd/blob/master/druntime/src/core/stdcpp/vector.d#LL66C5-L66C39
```
66:    ref inout(T) opIndex(size_t index) inout pure nothrow 
@safe @nogc       { return as_array[index]; }
```

I'm wondering if the `ref` and `inout` redundant here? They both 
mean the same thing? in C++ terms both return the reference of 
the i-th element? so only one of them should be enough?

If not, can someone help to explain the difference? the following 
4 return types:

1) `ref T` alone
2) `inout T` alone
3) `ref inout(T)`
4) `inout ref(T)`


BTW, what does the second `inout` before `pure` do? it's also 
redundant?

Thanks.



More information about the Digitalmars-d-learn mailing list