Dear all, Here follows a patch that removes implicit type casts in std::complex. *Description:* The current implementation of `complex<_Tp>` assumes that `int, double, long double` are explicitly convertible to `_Tp`. Moreover, it also assumes that: 1. `int` is implicitly convertible to `_Tp`, e.g., when using `complex<_Tp>(1)`. 2. `long double` can be attributed to a `_Tp` variable, e.g., when using `const _Tp __pi_2 = 1.5707963267948966192313216916397514L`. This patch transforms the implicit casts (1) and (2) into explicit type casts. As a result, `std::complex` is now able to support more types. One example is the type `Eigen::Half` from https://eigen.tuxfamily.org/dox-devel/Half_8h_source.html which does not implement implicit type conversions. *ChangeLog:* libstdc++-v3/ChangeLog: * include/std/complex: *Patch:* fix_complex.diff. (Also at https://github.com/gcc-mirror/gcc/pull/84) *OBS:* I didn't find a good reason for adding new tests or test results here since this is really a small upgrade (in my view) to std::complex. Sincerely, Weslley -- Weslley S. Pereira