Sto leggendo la "Libreria standard C++ (Seconda edizione)" di Nicolai M. Josuttis e ho appena raggiunto la sezione std::pair
. L'autore osserva che:Perché lo standard di classe std :: pair è stato modificato per disabilitare i tipi con solo un costruttore di copia non costante in C++ 11?
Poiché C++ 11, un
pair<>
utilizzando un tipo che ha solo un costruttore di copia non costante non verrà più compilato.
Si passa poi a dare l'esempio seguente:
class A
{
public:
...
A(A&); // copy constructor with nonconstant reference
...
};
std::pair<A, int> p; // Error since C++11
Tuttavia, mi interessa il motivo per cui la commissione standard ha deciso di fare questo emendamento alla norma libreria standard? Ho cercato di google la ragione, ma non ha avuto successo nel trovare qualcosa di pertinente.
Avrei dovuto supporre che si intendesse sempre usare const per promettere all'utente di conservare il contenuto della coppia, e C++ 11 era in grado di adattarlo allo standard attuale. –