• robinm@programming.dev
    link
    fedilink
    arrow-up
    6
    ·
    1 year 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
      arrow-up
      6
      ·
      edit-2
      1 year 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.