Yes. The first and third aren't legal. An element of a
container must support assignment, and A const doesn't.
In general, in the standard library, declaring a container to be
const (i.e. your second declaration) means that 1) the topology
(number and order of elements) cannot change, and 2) the value
of the individual elements cannot change.
Illegal. As I said above, the declaration of v is illegal in
the first and third cases above. And if v is declared as in the
second case, push_back cannot be used on it. Given something
std::vector< A > const v( 1, A() ) ;
however, v.m1() is legal, v.m2() no.
James Kanze (GABI Software) email: XXXX@XXXXX.COM
Conseils en informatique orient objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sard, 78210 St.-Cyr-l'ole, France, +33 (0)1 30 23 00 34