Я пытаюсь использовать boost :: thread, но не могу скомпилировать из-за ошибки компиляции locks.hpp. Я использую Boost 1.47.0 от BoostPro (предварительно скомпилированный для Windows). (Я кодировал много лет, и я только что наткнулся на один из тех ударов, который поставил меня в тупик.)
Добавление следующего кода в мой код приводит к ошибке:
#include "boost/thread.hpp"
Ошибка:
</p>
<pre><code>1>boost/thread/locks.hpp(85): error C2958: the left parenthesis '(' found at 'boost\thread\locks.hpp(85)' was not matched correctly
1> boost/thread/locks.hpp(91) : see reference to class template instantiation 'boost::detail::has_member_lock<T,true>' being compiled
1>boost/thread/locks.hpp(85): error C2988: unrecognizable template declaration/definition
1>boost/thread/locks.hpp(85): error C2059: syntax error : '<end Parse>'
1>boost/thread/locks.hpp(85): error C2238: unexpected token(s) preceding ';'
1>boost/thread/locks.hpp(109): error C2958: the left parenthesis '(' found at 'boost\thread\locks.hpp(109)' was not matched correctly
1> boost/thread/locks.hpp(115) : see reference to class template instantiation 'boost::detail::has_member_unlock<T,true>' being compiled
1>boost/thread/locks.hpp(109): error C2988: unrecognizable template declaration/definition
1>boost/thread/locks.hpp(109): error C2059: syntax error : '<end Parse>'
1>boost/thread/locks.hpp(109): error C2238: unexpected token(s) preceding ';'
Строки 84 и 85 из locks.hpp:
template< typename U,typename V>
static true_type has_member(V (U::*)());
Строки 108 и 109 из locks.hpp:
template<typename U,typename V>
static true_type has_member(V (U::*)());
Я искал определения препроцессора для маскировки кода, но ничего (пока) не работает.
Так что, похоже, '*' доставляет компилятору некоторые проблемы.
Любые предложения / помощь высоко ценится