Strange casting error when using lamdas
Robert M. Münch
robert.muench at saphirion.com
Wed Dec 4 18:31:24 UTC 2019
On 2019-12-03 16:34:43 +0000, Robert M. Münch said:
> I have very strange casting error I don't understand:
>
> alias typeof(windows_message_streams[WM_MOUSEMOVE].filter!(win =>
> (win.wParam & MK_LBUTTON))) WM_MOUSEMOVE_LBUTTON_TYPE;
> WM_MOUSEMOVE_LBUTTON_TYPE WM_MOUSEMOVE_LBUTTON_STREAM;
> pragma(msg,typeof(WM_MOUSEMOVE_LBUTTON_STREAM));
>
>>> FilterObservable!(__lambda39, SubjectObject!(OS_State))
>
> WM_MOUSEMOVE_LBUTTON_STREAM =
> cast(WM_MOUSEMOVE_LBUTTON_TYPE)(windows_message_streams[WM_MOUSEMOVE].filter!(win
> => (win.wParam & MK_LBUTTON)));
> pragma(msg,typeof(wstreams[WM_MOUSEMOVE].filter!(win => (win.wParam &
> MK_LBUTTON))));
>
>>> FilterObservable!(__lambda7, SubjectObject!(OS_State))
>
> ..\..\gui.d(317,104): Error: cannot cast expression
> filter(windows_message_streams[512u]) of type
> FilterObservable!(__lambda6, SubjectObject!(OS_State)) to
> FilterObservable!(__lambda39, SubjectObject!(OS_State)) because of
> different sizes
> FilterObservable!(__lambda7, SubjectObject!(OS_State))
>
> My code worked in the past but now it doesn't and I don't know why. I
> don't understand the "because of different sizes" message.
>
> It looks like I have to explicitly create a lambda and re-use it. But
> how to do that?
So, it all boils down to a breaking change in the RX framework... which
I still don't understand...
--
Robert M. Münch
http://www.saphirion.com
smarter | better | faster
More information about the Digitalmars-d-learn
mailing list