This is one of those questions Stroustrup gets tired of answering.
http://www.research.att.com/~bs/learn.html
The basic answer is: it depends on the learner.
I've been programming for 20+ years, and I have only recently begun digging very deeply into the STL and some of C++'s more functional aspects. But, that is because I hadn't used C++ very much before. Even so, I'm still learning new, cool stuff. That is to say, you never stop learning.
But you can become a very competent programmer in as short as, oh, six to nine months (IMO). The trick is just to get out there and mess with it, and to constantly be exposing yourself to new stuff to learn. If something goes over your head, put it aside for another day --you'll eventually get there.
At first it is very discouraging, C++ in particular because it, well, carries such a
huge capacity. But if you stick to the basics you can do some really fun stuff.
Have fun!
Oh yeah, I endorse this message. (And
exception's message too.) :-P
It is campain time here in the USA