クラステンプレートを作成しようとしています。
template<typename ObjType> class SharedBuffer: private boost::noncopyable
バッファデータへのアクセスを同期するためにboost::mutexを使用しています:
private: boost::mutex myMonitor;
しかし、ロックを作成すると、奇妙なコンパイルエラーが発生します。
template<typename ObjType>
inline void SharedBuffer<ObjType>::clear(void){
boost::mutex::scoped_lock lk(myMonitor);
myBuffer.clear();
}
Error 9 error C2664:
'boost::unique_lock<Mutex>::unique_lock(boost::unique_lock<Mutex> &)' :
cannot convert parameter 1 from
'const boost::mutex' to 'boost::unique_lock<Mutex> &'
なぜこれが起こっているのか分かりません。myMonitorを定数として宣言しませんでした。私はVS2010を使用しており、1.4.9をブーストしています