Just some anecdotes from me too:
I knew some languages when I started, Java/Delphi/VisualBasic. So I could do basic programming without thinking too much about it.
First time I started with C++ when I had to do some university assignments with it. I remember passing *** pointers to pointers between stuff and learning never to clean up memory because that got in a way of finishing my task... Loads of trouble. I also learned that you can get ridiculous stuff to compile with C
. And even work somewhat, and print endless strings of OS memory. Fun.
I tried to stay away from C++ since then, got into C#.
I remember making DirectSound filter with C# and realized that you can't compete with compilers like C in areas such as real-time sound processing. Just no easy way.
Later I got into XNA right when it appeared. I experimented with HDR post-processing effect in XNA and also got a bit disappointed in speed limits. You just can't beat no-check, direct memory access.
Later I worked on some networked application and I did it with C++. That's when I learned real C++: standard library, threading (with boost), templating, and wrote my own smart pointer template (although later I realized it already existed). The bugs I made were very tough. They really bite you in C++, especially pointer-related things.
So to answer your question. When will you know to move to C++? I know that if i had moved to it sooner, I would had learned it sooner. It is simple as that
.