En C++, quelles sont les différences entre static_cast<double>(a) et double(un)?

Quelles sont les différences entre

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

et

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

Avez-vous vu le dernier? Il me semble que je l'ai vu dans certains extrait écrit par Stroustrup, mais je ne trouve pas la référence.

Lorsque a est un int, static_cast<double>(a), (double)a, et double(a) sont tous sémantiquement identiques. Les différences deviennent évidentes quand a est un autre type scalaire, ou est const ou volatile, etc.
et à partir d'un point de vue des performances?
Des moyens identiques identiques, il n'y a pas de différence que ce soit.
en fait, de ne pas double(a) être un peu (mais insignifiant) plus lent lors de la compilation car elle va d'abord essayer de correspondre à une const_cast?
Trouver static_cast<double> dans ton code est beaucoup plus facile. Il se démarque le plus.

OriginalL'auteur Alessandro Jacopson | 2012-05-03