Jakie są różnice w C ++ między static_cast <double> (a) a double (a)?

Jakie są różnice między

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

i

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

Czy kiedykolwiek widziałeś to drugie? Wydaje mi się, że widziałem go w jakimś fragmencie napisanym przez Stroustrupa, ale nie mogę znaleźć odniesienia.