STIR 6.4.0
type traits for template metaprogramming that help with STIR
Collaboration diagram for type traits for template metaprogramming that help with STIR:

Can be used as follows

// void function that is enabled only if the class has an `iterator` typedef
template <typename T>
std::enable_if_t<has_iterator_v<T>>
func(T& obj)
{
for (auto iter: obj)
// do something
}