This concept is used to constrain the a template type to floating point real or complex types. Note that this concept is different to std::floating_point which does not include std::complex.