Many of the better-known C++ libraries in computational science such as Eigen, Trilinos, and deal.II use the standard C++ template header library object,
std::complex<>, to represent complex floating-point numbers.
In Jack Poulson's answer to a question about default constructors, he points out that he has his own implementation of
std::complex in Elemental "for a number of reasons". What are those reasons? What are the advantages and disadvantages to this approach?