En C ++, ¿cuáles son las diferencias entre static_cast <double> (a) y double (a)?

¿Cuáles son las diferencias entre

int a;
// a gets some value
double pi = static_cast<double>(a)/3;

y

int a;
// a gets some value
double pi = double(a)/3;

¿Alguna vez has visto este último? Me parece que lo vi en un fragmento escrito por Stroustrup pero no puedo encontrar la referencia.