// Description: Destruction of objects
// Documentation: sequence_algorithms.txt
#ifndef PASTELSYS_DESTRUCT_H
#define PASTELSYS_DESTRUCT_H
namespace Pastel
{
    //! Destructs all objects of type Type in the given range.
    /*!
   Preconditions:
   [begin, end[ forms a range.
   Time complexity: 
   * for types with trivial destructors: constant
   * otherwise: linear
   Exception safety: nothrow
   This function takes care of optimization in case the
   destructor of Type is trivial.
   */
    template <typename Type>
    void destruct(Type* begin, Type* end);
    //! Destructs an object of type Type.
    /*!
   Exception safety: nothrow
   This function takes care of optimization in case the
   destructor of Type is trivial.
   */
    template <typename Type>
    void destruct(Type* that);
}
#include "pastel/sys/destruct.hpp"
#endif