Кажется, существует проблема, используя литерал i
в C++ с помощью std::complex
.
Рассмотрим следующий код:
std::complex<double> a = -1.0i * 42.0;
std::complex<double> b = a + 1.0i;
Вторая строка не скомпилируется с: error: no match for 'operator+ (operand types are 'std::complex<double> and '__complex__ double)
Это также проявляется при использовании сложного литерала в вызовах функций, например
std::exp<std::complex<double>>( 1.0i * 3.14159 );
Почему сложный литерал 1.0i
не конвертируется в std::complex<double>
?
Должен ли я явно построить std::complex
с 1.0i
?