++ Container - value_type , SFINAE , - , iterator_traits:
template<class T>
auto functionWhichIteratesOverBobs(T &bobs)
-> std::enable_if_t<std::is_same_v<typename T::value_type, Bob>>
{
}
, ; , , decltype(std::begin(bobs)) iterator_traits:
template<class T>
auto functionWhichIteratesOverBobs(T &bobs) -> std::enable_if_t<std::is_same_v<
typename std::iterator_traits<decltype(std::begin(bobs))>::value_type, Bob>>
{
}