Noexcept и throw()

Потому-что кто-то игнорирует стандарты (g++ перемещающий конструктор отвергнет).

Смотрим документацию

- "If no reallocations happen or if the type of the elements has either a non-throwing move constructor or a copy constructor, there are no changes in the container in case of exception (strong guarantee).".

Копирующий конструктор у класса есть, значит reserve должен гарантировать "даже если что сбойнет, содержимое вектора останется неизменным". Однако, перемещающий конструктор исходные данные таки меняет. Поэтому, нужно либо гарантировать что конструктор не сбойнет (не кинет исключения), либо не использовать его вовсе.