The cppreference page says:
> If the program adds specializations for std::is_fundamental or std::is_fundamental_v, the behavior is undefined.
This is an oversimplification. The actual rule is https://eel.is/c++draft/library#namespace.std-2 .
> the specialization meets the standard library requirements for the original template.
For is_fundamental<YourClassType> it means that is_fundamental<YourClassType>::value must be false, as YourClassType is not a fundamental type, as defined in https://eel.is/c++draft/basic.fundamental#17 .
Some traits are just not designed to be customization points.