Я работаю над старым проектом исходного кода, который изначально был написан с использованием MSV C 2008 и Boost 1.42, сегодня я пытаюсь перенести его на MSV C 2017 с Boost 1.73
Там необходимо решить множество проблем, одна из которых приведена ниже:
Severity Code Description Project File Line Suppression State
Error C3536 'binding': cannot be used before it is initialized Process Control Service Group processscope.cpp 197
Строка, в которой это происходит:
auto binding = boost::bind(&IProcessChangeObserver::notify, _1, m_scope, change);
std::for_each(observers.begin(), observers.end(), binding);
Первоначально назначение привязки было встроено в качестве третьего параметра, это дает ту же ошибку. Я понимаю, почему это проблема, я не понимаю, почему это когда-либо сработало?
Есть ли другой способ написать выше, не вызывая предупреждения?
Я попытался заменить на стандартный l oop:
for( std::list<boost::intrusive_ptr<IProcessChangeObserver> >::iterator itProc=objservers.begin();
itProc!=objservers.end(); itProc++ ) {
boost:bind(&IProcessChangeObserver::notify, itProc, m_scope, change);
}
Если честно, я не на 100% уверен, подходит ли это для подобной замены?