Ich habe gerade festgestellt, dass C ++ keine Warnungen zum Umwandeln von pair<double, int>
nach pair<int, int>
gibt, was ein wenig überraschend ist. Hier ist mein Programm test_pair.cpp
:
Ich kompiliere es mit g++ test_type.cpp -Wall -Wconversion
, aber es werden immer noch keine Warnungen generiert. Ich benutze g ++ v4.6.1. Jeder hat eine Idee, wie man g ++ eine Warnung dafür erzeugen kann, oder es kann einfach nicht gemacht werden?
Paare (und Tupel) sind aus fast allem, was passt, konstruierbar. Insbesondere kann jedes Element aus allem konstruiert sein, das implizit in es umwandelbar ist. Im Grunde "tut es, was Sie erwarten". Das pair
hat Konstruktorvorlagen, die ungefähr so aussehen:
Sie sollten jedoch nur sagen:
%Vor%