このサンプル クラスhttp://www.boost.org/doc/libs/1_49_0/libs/smart_ptr/sp_techniques.html#as_lockに出会い、構文に苦労しています。
class shared_lock
{
private:
shared_ptr<void> pv;
public:
template<class Mutex> explicit shared_lock(Mutex & m): pv((m.lock(), &m), mem_fn(&Mutex::unlock)) {}
};
この「(m.lock(), &m)」の部分を除いて、私はすべてを理解しています (信じています)。その全体が、スマート ポインターを初期化する最初のパラメーターのようです。その複合文は何に評価されますか? それは単にmのアドレスですか?ロックがパラメーター リストの一部としてそこに配置されているのはなぜですか (また、どのように有効なのですか)? 代わりに、次のようなステートメントを期待していました。
template<class Mutex> explicit shared_lock(Mutex & m): pv(&m, mem_fn(&Mutex::unlock)) {m.lock();}
私の代替ステートメントは機能を変更しますか?