Właśnie znalazłem, że C++ nie daje żadnych ostrzeżeń dotyczących przesyłania z pair<double, int>
do pair<int, int>
, co jest trochę zaskakujące. Oto mój program test_pair.cpp
:g ++ opcje ostrzegania dla pary rzutów?
#include <vector>
#include <utility>
using namespace std;
int main()
{
std::vector<pair<int, int> > v;
pair<double, int> p = make_pair(3.8, 3);
v.push_back(p);
}
skompilować go przy użyciu g++ test_type.cpp -Wall -Wconversion
, ale nadal nie ma ostrzeżenia są generowane. Używam g ++ v4.6.1. Ktoś wpadł na pomysł, jak sprawić, by g ++ wygenerowało ostrzeżenie, lub po prostu nie da się tego zrobić?
Co to jest zapis? Nie znam tego: 'v.push_back ({p});'. – orlp
Niestety, próbowałem użyć funkcji C++ 11, powinienem usunąć nawiasy. – chtlp