// Description: Point-type of a point-set
// DocumentationOf: pointset_concept.h
#ifndef PASTELSYS_POINTSET_POINT_H
#define PASTELSYS_POINTSET_POINT_H
#include "pastel/sys/pointset/pointset_concept.h"
#include "pastel/sys/pointset/pointset_point_id.h"
#include "pastel/sys/set/set_concept.h"
#include "pastel/sys/function/identity_function.h"
#include "pastel/sys/type_traits/remove_cvref.h"
#include <type_traits>
namespace Pastel
{
template <
typename PointSet,
Requires<
Models<PointSet, PointSet_Concept>
> = 0
>
using PointSet_Point =
RemoveCvRef<decltype(*ranges::begin(std::declval<PointSet>()))>;
template <
typename PointSet,
Requires<
Models<PointSet, PointSet_Concept>
> = 0
>
using PointSet_Point_F =
Identity_F<PointSet_Point<PointSet>>;
}
#endif