Cannot access frame pointer of a struct with member function

evilrat evilrat666 at gmail.com
Sun May 9 17:51:56 UTC 2021


On Sunday, 9 May 2021 at 17:37:40 UTC, Andrey Zherikov wrote:
> Compilation of this code:
> ```d
> auto foo(T)()
> {
>     return T();   // Error: cannot access frame pointer of 
> `onlineapp.main.T`
> }
>
> void main()
> {
>     struct T
>     {
>         int a=1;
>         void argsFunc(int a) {} // (1)
>     }
>
>     pragma(msg,foo!T());
> }
> ```
> fails with this error:
> ```
> onlineapp.d(3): Error: cannot access frame pointer of 
> `onlineapp.main.T`
> onlineapp.d(14): Error: template instance `onlineapp.foo!(T)` 
> error instantiating
> onlineapp.d(14):        while evaluating `pragma(msg, 
> foo!(T)())`
> ```
> But when I comment out argsFunc function on line (1), it 
> compiles successfully meaning that there is no issue to access 
> frame pointer.
>
> Is this a bug?

Most likely because function member types have access to the 
scope, it complains because doing so will escape the scope of 
that function.

If you make struct static this erorr should go away.


More information about the Digitalmars-d-learn mailing list