1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
#include <map>
template <typename Type>
concept bool Addable =
requires(Type lh, Type rh)
{
lh + rh;
};
template <typename Type>
concept bool Incrementable =
requires(Type tp)
{
++tp;
};
//and
template <typename Type>
concept bool And =
requires(Type lh, Type rh)
{
lh + rh;
}
and requires(Type tp)
{
++tp;
};
template <And Type>
Type add(Type const &lh, Type const &rh)
{
return lh + rh;
}
//=
using namespace std;
int main()
{
add(0, 0);
// add(map<int,int>{}, map<int,int>{});
}
|