class A
{
public:
A(auto_ptr<B>& b1, auto_ptr<B>& b2)
Pass arguments by value here instead of by reference. It's a common idiom that is used to enforce and document the fact that function takes ownership of arguments.
: b1_(b1.release()), b2_(b2.release())
{}
private:
scoped_ptr<B> b1_;
scoped_ptr<B> b2_;
};