Arrays are the odd type in C++: int[5] and int[] are distinct types, both decay to int* at the slightest touch, and generic code regularly needs to catch them BEFORE the decay. The standard has std::is_array; here you build it yourself and see why there are exactly two specializations.
Implement IsArray<T>::value: true for int[5] and int[], false for everything else (including int* — a pointer is not an array). Two partial specializations carry the whole task.
T[] and T[N] are matched by two different partial specializations — the bound is part of the type.
Hit Submit (or ⌘/Ctrl + ↵) — test results will show up here.