template<typename T>
struct CLI::detail::is_readable_container< T, conditional_t< false, void_t< decltype(std::declval< T >().end()), decltype(std::declval< T >().begin())>, void > >
type trait to test if a type is a container meaning it has a value_type, it has an iterator, and an end method.