Right now, complex class is pretty WIERD:

 

complex<char> c(‘1’, ‘2’);

 

LOL.

Why not implement a concept in <complex.h>: (in anonymous namespace)

 

template <typename T>

concept C = std::_Is_nonbool_integral<T>() || std::is_floating_point_v<T>();

 

BETTER: define this concept as std::number in <stdlib.h>

 

(And equivalent concepts in other classes)