A pointer is no arithmetic type.
From 18.3.2.1 Class template numeric_limits
The
numeric_limits
class template provides a program with information about various properties of the implementation’s representation of the arithmetic types. Specializations shall be provided for each arithmetic type, both floating point and integer, including bool. The memberis_specialized
shall be true for all such specializations ofnumeric_limits
. For all members declared static constexpr in thenumeric_limits
template, specializations shall define these values in such a way that they are usable as constant expressions. Non-arithmetic standard types, such ascomplex<T>
(26.4.2), shall not have specializations.
Hence. your test applying a non arithmetic type leads to meaningless default values.