The stl is full of definitions like this:
iterator begin ();
const_iterator begin () const;
As return value does not participate in overloa
From C++ standard (§13.3.1 Candidate functions and argument lists):
For non-static member functions, the type of the implicit object parameter is “reference to cv X” where X is the class of which the function is a member and cv is the cv-qualification on the member function declaration. [Example: for a const member function of class X, the extra parameter is assumed to have type “reference to const X”. ]
So, in your case, if myvector object is const compiler will pick version of begin which has implicit object parameter of type reference to const vector which is const version of begin.