N'casting pour un int, après std::plancher de garantir le bon résultat?

Je voudrais un floor fonction avec la syntaxe

int floor(double x);

mais std::floor renvoie une double. Est

static_cast <int> (std::floor(x));

garanti pour me donner le bon nombre entier, ou pourrais-je avoir un tout-en-un problème? Il semble fonctionner, mais je voudrais savoir pour sûr.

Pour les points de bonus, pourquoi diable ne std::floor retour d'un double en premier lieu?

InformationsquelleAutor Jesse Beder | 2009-03-03