class worker { std::atomic_bool done; std::string segment_name; bi::named_mutex mutex; std::string file_name; data_segment_state state; unsigned long data_size; std::unique_ptr<unsigned char> data; protected: void operator()() { while(!done) { } } public: worker(const std::string& _segment_name, bi::managed_shared_memory& segment) : done{false}, segment_name{_segment_name}, mutex{bi::open_or_create, segment_name.c_str() }, file_name {}, state {data_segment_state::not_received }, data_size{0}, data {segment.construct<unsigned char>(segment_name.c_str())[chunk_size](0) } } worker(worker&& rhs) : done {rhs.done.load()} , mutex(bi::open_or_create, rhs.segment_name.c_str()), segment_name{rhs.segment_name}, file_name {rhs.file_name}, state {rhs.state }, data_size{rhs.data_size}, data {std::move(rhs.data)} { } }; ...
std::string worker_name; std::thread t{worker{worker_name, segment}}; In instantiation of 'struct std::_Bind_simple<worker()>': thread:137:47: required from 'std::thread::thread(_Callable&&, _Args&& ...) [with _Callable = worker; _Args = {}]' error: no type named 'type' in 'class std::result_of<worker()>' typedef typename result_of<_Callable(_Args...)>::type result_type; what is a valid thread initialization with functional object? full text of error: error: no type named 'type' in 'class
std::result_of' typedef typename result_of<_Callable(_Args...)>::type result_type; ^
workerthen pass it to the thread constructor.