Je suis en train de passer un bon bout de code (environ 2 million de lignes de code) de g++4.4 à g++4.8. Rien de trop méchant, mais quelques points intéressants à noter dans l'implémentation de C++11.
Le changement qui m'a le plus impacté est celui de std::make_pair. La signature de cette fonction est passée de std::make_pair(const T & left, const U & right) à std::make_pair(T left, T right), pour finalement devenir std::make_pair(T && left, T && right). La différence est double.
D'une part, il faut surtout laisser le compilo dériver les types templates. Un std::make_pair
D'autre part, la conversion de type ne se fait plus. Alors qu'il était possible de faire, par exemple,
std::pair<int, std::shared_ptr<std::string> > = std::make_pair(1, new std::string("abc")), la conversion de std::string * en std::shared_ptr<std::string> ne se fait plus implicitement. Il faudra donc taper
std::pair<int, std::shared_ptr<std::string> > = std::make_pair(1, std::make_shared<std::string>("abc")).
Aucun commentaire:
Enregistrer un commentaire