на жизнь?
                  
                  
                  template <typename T, typename... Args>
                  
                  
                  inline void replace(T& object, Args&&... args)
                  
                  
                  {
                  
                  
                      try
                  
                  
                      {
                  
                  
                          object.~T();
                  
                  
                      }
                  
                  
                      catch (...)
                  
                  
                      {
                  
                  
                          new (&object) T(args...);
                  
                  
                          throw;
                  
                  
                      }
                  
                  
                      new (&object) T(args...);
                  
                  
                  }
                  
                  
                
Где вы взяли деструктор, бросающий исключения?
И вот интересно, как быть если placement new будет бросаться.
в любом случае, ваш код забагован в С++17, там надо прачечных ставить
Обсуждают сегодня