digitalmars.D - why is the 'return' attribute not working?
It doesn't throw any error
```d
import std.stdio;
void main()
{
int id = IdWrap().getID;
writeln("use: ", id);
}
struct IdWrap
{
private int _id;
int getID() return
{
return _id;
}
~this(){
writeln("delete id:(");
}
}
```
Moreover, if you return `this.someSlice.ptr` in the return method
in a structure, there will also be no error.
May 01 2022
You're not returning a pointer and you're not returning by `ref`, so `return` is ignored. On Sunday, 1 May 2022 at 21:09:14 UTC, mesni wrote:Moreover, if you return `this.someSlice.ptr` in the return method in a structure, there will also be no error.What error do you expect?
May 01 2022
On Sunday, 1 May 2022 at 21:09:14 UTC, mesni wrote:
It doesn't throw any error
```d
import std.stdio;
void main()
{
int id = IdWrap().getID;
writeln("use: ", id);
}
struct IdWrap
{
private int _id;
int getID() return
{
return _id;
}
~this(){
writeln("delete id:(");
}
}
```
Moreover, if you return `this.someSlice.ptr` in the return
method in a structure, there will also be no error.
`return` attribute has effect only if return type of function has
indirection. For basic types like int has no effect.
Example:
```d
import std.stdio;
void main() safe
{
int* id = IdWrap().getID; //Error: address of variable
`__slIdWrap40` assigned to `id` with longer lifetime
writeln("use: ", id);
}
struct IdWrap
{
private int _id;
property int* getID() safe return
{
return &_id;
}
~this() safe{
writeln("delete id:(");
}
}
```
May 01 2022









Dennis <dkorpel gmail.com> 