(原書の)コード例の間違い
13.6.4.1 reserve()
template < typename T, typename A >
void vector < T, A >:: reserve( size_ type newalloc) // 欠陥のある最初の版
{
if (newalloc <= capacity()) return; // 確保分を減らすことはない
vector < T, A > v( newalloc); // 新しい要素数でvectorを作る
copy( vb. elem, vb. elem + size(), v. begin());// 全要素をコピー
vb. space = size();
swap(∗ this, v); // 新しい値を入れる
} // 古い値を暗黙裏に解放
原書のコード
template < typename T, typename A >
void vector < T, A >:: reserve( size_ type newalloc) // flawed first attempt
{
if (newalloc <= capacity()) return; // never decrease allocation
vector < T, A > v( newalloc); // make a vector with the new capacity
copy( elem, elem + size(), v. begin());// copy elements
vb. space = size();
swap(∗ this, v); // install new value
} // implicitly release old value
邦訳でも原書でもvbはvectorの(vector_base型の)メンバ変数として (大分前の §13.6.2 の中ほどのコード例で)宣言されている。vectorがvector_baseから派生していのるであれば原著のようにvb.は要らないが、そうではないのでこれは邦訳の方が正しい。