Why does C++ define the norm as the Euclidean norm squared?
The C++ usage of the word "norm" is rather confusing, since most people have only ever come across norms in the context of vector spaces. If you view the complex numbers as a vector space over the reals, this is definitely not a norm. In fairness to C++, the std::norm( ) function does compute the so-called Field Norm from the complex numbers to the reals.
Fortunately, there is the std::abs( ) function, which does what you want.
Incidentally, the Euclidean norm squared can be useful as an optimization, especially in game physics; if you want to compare magnitudes/distances, or for any other reason don't need linearity, then you can work with the squared distances rather than the actual distances, and avoid computing square roots.
norm(v1) < norm(v2) instead of abs(v1) < abs(v2)
norm(v) < CONSTANT_SQUARED instead of abs(v) < CONSTANT
(using the fact that abs() is magnitude as mentioned in another answer)