https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69060
Sławomir <slawomir.karol.domagala at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |slawomir.karol.domagala@gma | |il.com --- Comment #1 from Sławomir <slawomir.karol.domagala at gmail dot com> --- The same with version 4.9.4 20150813 (prerelease) Error: CXX diag/bin/fsmf_test/collector_handler.o src/log_collecting/collector_handler.cpp: In member function ‘void diag::collector_handler::add_file_to_dl_list(const string&, bool)’: src/log_collecting/collector_handler.cpp:274:47: error: cannot bind ‘bool’ lvalue to ‘bool&&’ observers_list->notify_observers(uri, is_last); ^ In file included from ../diag/src/log_collecting/diag_object.h:8:0, from src/log_collecting/collector_handler.h:11, from src/log_collecting/collector_handler.cpp:13: ../diag/src/log_collecting/observers_container.h:52:15: note: initializing argument 2 of ‘void diag::observers_container<callback_args_types>::notify_observers(callback_args_types&& ...) [with callback_args_types = {boost::optional<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, bool}]’ virtual void notify_observers(callback_args_types&&... args) { Code: template <typename... callback_args_types> class observers_container { public: typedef std::function<void(callback_args_types...)> callback_type; observers_container() = default; virtual ~observers_container() = default; /*! * Copy constructor */ observers_container(const observers_container& o_container) { observers_list = o_container.observers_list; } /*! * Adds observer */ void add(callback_type obs) { std::lock_guard<std::mutex> lock(list_mtx); observers_list.push_back(obs); } /*! * Removes observer */ void remove(const callback_type& obs_to_unregister) { std::lock_guard<std::mutex> lock(list_mtx); observers_list.remove(obs_to_unregister); } /*! * Notifies observers */ virtual void notify_observers(callback_args_types&&... args) { std::lock_guard<std::mutex> lock(list_mtx); for(auto observer: observers_list) { observer(std::forward<callback_args_types>(args)...); } } private: std::list<diag_object_observer_handle> observers_list; mutable std::mutex list_mtx; };