The code (Godbolt)
#include <__type_traits/integral_constant.h>
template <class T>
struct rank : std::integral_constant<int, __array_rank(T)> {};
template <class T>
void test_rank() {
static_assert(rank<T>::value == 0);
}
void func() {
test_rank<void>();
}
generates func(), but doesn't generate test_rank<void>().