// Description: Concepts for ClonePtr
#ifndef PASTELSYS_CLONE_PTR_CONCEPTS_H
#define PASTELSYS_CLONE_PTR_CONCEPTS_H
#include "pastel/sys/pointer/clone_ptr.h"
#include "pastel/sys/mytypes.h"
namespace Pastel
{
    namespace ClonePtr_Concepts
    {
        using Type = UserDefinedType;
        class Cloner
        {
        public:
            //! Returns a deep copy of 'that'. 
            Type* operator()(const Type& that) const;
        };
        class Deleter
        {
        public:
            //! Frees the resource in 'that'.
            void operator()(const Type* that) const;
        };
    }
}
#endif