//move the element
void StrVec::push_back(string &&s)
{
chk_n_alloc();
alloc.constructor(first_free++,std::move(s));
}
alloc は allocator のオブジェクトです。chk_n_alloc() は気にしないでください。sが既に右辺値であることを知りたいのですが、なぜ std::move を呼び出してsをコンストラクターに渡す必要があるのでしょうか? コードは C++ 入門書 5th p545 からのものです。