In order to satisfy
input_iterator, a type must do more than inherit
std::bidirectional_iterator_tag. It must supply
operator* and such with the right types, etc.
Your old SFINAE-based approach performed the
minimum checking required to prevent ambiguity. Concept checking looks a lot more closely at the involved types, and you're falling afoul of it.
You'll need to implement your iterator before it will satisfy the concept. Specifically, you must implement the operations discussed in this reference page
https://en.cppreference.com/w/cpp/iterator/input_iterator
If that page is too inscrutable, read the old definition of input iterators:
https://en.cppreference.com/w/cpp/named_req/InputIterator
which is hopefully better.
In any event
std::list::iterator is defined to satisfy these requirements, so you could just implement it without paying attention to the requirements in those pages.
This paper talks more about concepts - in particular, the problems it's supposed to solve, and how to properly use the feature:
https://www.stroustrup.com/good_concepts.pdf