Template integral_constant defines a type, keyword constexpr defines a constant.
For example std::true_type is std::integral_constant<bool, true>.
One of the usage examples is tag-dispatching.
template<typename T>
void use_impl(const T&, std::false_type)
{
}
template<typename T>
void use_impl(const T&, std::true_type)
{
}
template<typename T>
void use(const T& v)
{
use_impl(v, typename std::is_integral<T>::type());
}
Live example