C números complexos em C ++?

O código a seguir compila e executa muito bem em C (pelo menos de acordo com 'gcc-std = gnu99'), mas não consegue compilar em C ++, dando "linha 5: erro: não é possível converter 'double' para 'doublecomplexo'na inicialização ". Alguém sabe por quê?

<code>#include "/usr/include/complex.h"
#include <stdio.h>

int main(int argc, char * argv[]) {
  double complex a = 3;  // ERROR ON THIS LINE
  printf("%lf\n", creal(a));
  return 0;
}
</code>

Eu percebo que há outra maneira de fazer números complexos em C ++, mas eu tenho que usar números complexos C em C ++, porque é assim que o código legado que me foi dado faz coisas. Obrigado se você puder ajudar!

questionAnswers(3)

yourAnswerToTheQuestion