It does not exist.
You can create your own trait if you know the set of container types that should be supported :
template<class T>
struct is_container
{
static const bool value = false;
};
template<>
template<class T, class Alloc>
struct is_container<std::vector<T, Alloc>>
{
static const bool value = true;
};
// ... same specializations for other containers.
And you use it like other traits:
cout << is_container<std::vector<int>>::value << endl;
cout << is_container<int>::value << endl;
See it here.
Note that usually you should pass iterators to your functions, not containers. So you keep your code container-independent and much more generic.