• @robinm@programming.dev
    link
    fedilink
    52 years ago

    Couldn’t this be solved by having push_back being an inline function (or at least the check on capacity being inlined and the rest of the non-trivial part being in a sub non-inline function)?

    • @kornel@programming.dev
      link
      fedilink
      6
      edit-2
      2 years ago

      I don’t know about C++, but in Rust the push is inline, and still doesn’t always optimize checks away due to an annoying edge case: integer overflow. Reserving (old_len + new_len) could give you a smaller buffer than new_len. The optimizer sees it and is pedantic about it.