Passing delegate indirectly to createLowLevelThread doesn't work
Tejas
notrealemail at gmail.com
Mon Jul 26 17:14:45 UTC 2021
On Monday, 26 July 2021 at 17:01:13 UTC, JG wrote:
> On Monday, 26 July 2021 at 16:46:40 UTC, Tejas wrote:
>> On Monday, 26 July 2021 at 15:42:44 UTC, Paul Backus wrote:
>>> On Monday, 26 July 2021 at 15:29:26 UTC, Tejas wrote:
>>>> [...]
>>>
>>> The delegate must be `nothrow`:
>>>
>>> ```d
>>> void delegate() nothrow f;
>>> ```
>>
>> Doesn't seem to matter. I tried that beforehand. And even if
>> it did why does passing it directly work without explicitly
>> qualifying it as nothrow then?
>
> It does work for me. To me running the following explains why:
>
> ```d
> import std;
> import core.thread.osthread;
>
> void delegate() f;
> void main()
> {
> void func(){}
> f = &func;
> pragma(msg,typeof(&func));
> pragma(msg,typeof(f));
> createLowLevelThread(&func, 2<<30);//works
> //createLowLevelThread(f, 2<<30);// doesn't work!!
> }
> ```
Yeah after reading the error diagnostics carefully I realized
that the compiler is inferring many attributes when passing
```func``` directly but not when passing via delegate
More information about the Digitalmars-d-learn
mailing list