This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of NAD Editorial status.

### 1013. Remove `IsSameType` hold-over constraints

Section: 25.8.9 [alg.min.max] Status: NAD Editorial Submitter: Alisdair Meredith Opened: 2009-03-11 Last modified: 2016-01-28

Priority: Not Prioritized

View all other issues in [alg.min.max].

View all issues with NAD Editorial status.

Discussion:

Addresses UK 305

The negative requirement on `IsSameType` is a hold-over from an earlier draught with a variadic template form of `min/max` algorith. It is no longer necessary.

[ Batavia (2009-05): ]

> We agree with the proposed resolution. Move to Tentatively Ready.

[ 2009-07 Frankfurt ]

> We believe this is NAD, but this needs to be reviewed against the post-remove-concepts draft.

Proposed resolution:

Change 25 [algorithms]:

>     template<class T, StrictWeakOrder<auto, T> Compare>
>       requires !SameType<T, Compare> && CopyConstructible<Compare>
>       const T& min(const T& a, const T& b, Compare comp);
>     ...
>     template<class T, StrictWeakOrder<auto, T> Compare>
>       requires !SameType<T, Compare> && CopyConstructible<Compare>
>       const T& max(const T& a, const T& b, Compare comp);
>     ...
>     template<class T, StrictWeakOrder<auto, T> Compare>
>       requires !SameType<T, Compare> && CopyConstructible<Compare>
>       pair<const T&, const T&> minmax(const T& a, const T& b, Compare comp);

Change 25.8.9 [alg.min.max], p1, p9 and p17:

>     template<class T, StrictWeakOrder<auto, T> Compare>
>       requires !SameType<T, Compare> && CopyConstructible<Compare>
>       const T& min(const T& a, const T& b, Compare comp);
>     ...
>     template<class T, StrictWeakOrder<auto, T> Compare>
>       requires !SameType<T, Compare> && CopyConstructible<Compare>
>       const T& max(const T& a, const T& b, Compare comp);
>     ...
>     template<class T, StrictWeakOrder<auto, T> Compare>
>       requires !SameType<T, Compare> && CopyConstructible<Compare>
>       pair<const T&, const T&> minmax(const T& a, const T& b, Compare comp);