EventBus icon indicating copy to clipboard operation
EventBus copied to clipboard

Compilation issue when using std::future

Open gelldur opened this issue 3 years ago • 4 comments

/home/X/.cache/X/prebuild/X/install-Debug/include/dexode/eventbus/Bus.hpp:82:23: error: no matching function for call to 'create'
                auto postponeCall = PostponeHelper::create<Event>(std::move(event));
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/X/Project/X/X/src/backend/BackendApplication.cpp:124:14: note: in instantiation of function template specialization 'dexode::eventbus::Bus::postpone<event::backend::XYZ>' requested here
                                        guiBus->postpone(event::backend::XYZ{
                                                ^
/home/X/.cache/X/prebuild/X/install-Debug/include/dexode/eventbus/Bus.hpp:54:24: note: candidate function template not viable: no known conversion from 'typename std::remove_reference<XYZ &>::type' (aka 'event::backend::XYZ') to 'std::any' for 1st argument
        static PostponeHelper create(std::any&& event)

Example:

	guiBus->postpone(event::backend::XYZ{
		"text",
		std::async(std::launch::deferred, [state]() { return state->state(); })})

I would expect either working or more clear compile error. Maybe everything is ok but should work I guess...

gelldur avatar Dec 05 '22 07:12 gelldur

Ok issue is in unclear compilation error this is reason:

error: call to implicitly-deleted copy constructor of 'event::backend::XYZ'

gelldur avatar Dec 05 '22 07:12 gelldur

Notes:

  1. Event state can't be mutable. Interesting use case when we would like to "cache" result of deferred async task. Need to write wrapper for such future?

gelldur avatar Dec 05 '22 07:12 gelldur

Is this problem solved? If not, I could look at it, it would be interesting to understand

MrMaksym avatar Jun 05 '23 16:06 MrMaksym

Yeah still valid issue. Not sure what correct solution would be as mentioned above of mutable state of event.

gelldur avatar Jun 05 '23 16:06 gelldur