Реализация emplace_front в листе

template<typename... Args,typename Alloc=std::allocator<T>>
    void emplace_front(Args&&... args) {
     Alloc alloc = Alloc() ;
     T* d=std::allocator_traits<Alloc>::allocate(alloc, sizeof(T));
         std::allocator_traits<Alloc>::construct(alloc, d
         ,std::forward<Args>(args)...);

         //Вставляем d в свой list<T>

         std::allocator_traits<Alloc>::destroy(alloc, d);
         std::allocator_traits<Alloc>::deallocate( alloc,d, sizeof(T));
    }

Имеет ли место быть такая реализация emplace в листе, если нет, то насколько это плохо сделано и к каким серьёзным ошибкам может привезти такая реализация.

Сама вставка

 Node* n = new Node(*d);
         if (sz == 0) {
             n->next = &fakeNode;
             fakeNode.pred = n;
             n->pred = &fakeNode;
         }
         else {
             n->next = static_cast<Node*>(fakeNode.next);
             n->pred = &fakeNode;
             fakeNode.next->pred = n;
         }
         fakeNode.next = n;
         sz++;


Ответы (0 шт):