std::reference_wrapper
хранит ссылку на объект. Это никак не влияет на время жизни ссылочного объекта, и вы принимаете обязательство, что вы не будете пытаться использовать std::reference_wrapper
после уничтожения ссылочного объекта. Наказанием за это является неопределенное поведение .
Таким образом, когда вы удаляете ссылочный элемент из vectorA
, ссылочная оболочка в vec
теперь недопустима, но это не знает, и вы не можете сказать . Любое использование этого ссылочного объекта-оболочки теперь будет вызывать неопределенное поведение.
Одним из возможных последствий неопределенного поведения является то, что ваша программа продолжает работать, и именно это происходит здесь. Вы пытаетесь использовать недопустимый объект-оболочку ссылки и получаете значение обратно, но это не значит, что программа действительна.