Or you could put breakpoints in the likely candidates, run it and see what happens.
It's actually quite beneficial to have a set of classes, fully decked out with each type of constructor and operator. Put cout statements in each method and then try creating vectors of them (for e.g.) and see what methods are actually called when. You'll be surprised.
Which will it use? And how do you know? My guess is the 2nd one but I don't know how to find out from the vector documentation alone.. I don't really want to just test it because I'd like to know why it's like that and where I can find the documentation that says it.
For object newvec of type std::vector<MyClass> will be called copy constructor
vector( const vector &vec )
So this constructor can call only const function for the vector specified as an argument. However class MyClass has no the copy constructor that accepts const reference to MyClass.