#include #include #include #include template concept bool BasicIterator = requires(Type type) { *type; } and requires (Type lhs, Type rhs) { { lhs == rhs; } { lhs != rhs; } } ; template concept bool ReadAndIncrementable = requires (Type type) { requires BasicIterator; ++type; type++; } ; template void copy(Type it1, Type it2); using namespace std; int main() { copy(string{}.begin(), string{}.end()); }