My advice below is is all US, East-Coast-based.
>
> - Should I be willing to take a major pay cut if I can work in/on
> something I enjoy?
If you are determined to enter a new field, you have to be prepared to be
treated as beginner-to-intermediate in C++, even though in your old field (.Net)
you were an expert, with all respective consequences in compensation etc.
I suspect you may face another issue you have not realized yet: your business
experience (that with boring business applications) may matter to a hiring
manager not less if not more than your programming language. That is, don't be
surprised if you land a C++ position (maybe for lesser compensation) and end up
told to write some equally boring back-ends for those boring front-end forms.
I would suggest you to triple-think that you are ready to take this zig-zag in
your career (what makes me think you might feel sorry about it later is that you
have not decided yet that you are ready to take a significant position and pay
cuts to "pay" for the opportunity to pursue your new interests).
> - Is there such a thing as an entry-level C++ position out there?
Yes. My current firm hires most C++ programmers for entry-level positions; (but
our interviews are quite cruel nonetheless).
> All
> I ever see are positions for already experienced C++ programmers.
As long as your account of your skills and experience in C++ in your resume is
accurate, do not hesitate to apply for these positions. It's kind of a game: no
one writes in their job posting that they need an "inexperienced" C++
programmer; and they will try to prove to you during the interview that you are
not as good as you think you are to get a good negotiating position.
Also, entry-level positions are often filled at campuses. Your case is special:
you can always position yourself as an experienced software engineer with some
C++ and more. You are truly special but you can only explain your situation
during the phone or in-person conversation; but to get in the door for this
conversation, you need to apply for the position first. A recruiter or (ideally)
someone from the firm may call you and ask "why do you think you are good for
this position with this experience" -- and this will be your chance to explain.
Just be aware that, as I said before, your unwillingness to work for your old
business domain may play against you in the eyes of a hiring manager (you are
too old to be treated like a college graduate but have one's skill level in what
matters for him/her, you do not come through the usual channel of on-campus
recruiting or internship, you may create an impression that you feel
negative/bored about your former occupations / jobs and that never helps: as a
hiring manager I would think "what if this guy starts feel bored with the things
I will need him to do", etc).
> Since the language is not taught in colleges anymore, has a line been
> drawn in the sand such that new programmers can't work in C++?
No. It's taught and, especially in graduate schools, lots of professors make
their guys do projects in C/C++ (especially in Electrical Engineering and Math
-- this I know first-hand). It's true that OO programming is not taught in C++
as much as before though.
>
> - If I've read the best books by Herb Sutter, Scott Meyes, Bjarne
> Stroustrup and Nicolai Josuttis, how far away am I from being a top-
> notch C++ programmer?
Hard to say without reading your code and checking how you can understand the
(both good and bad) code written by others. Books are just learning tools; best
and worst programmers I have met sometimes learned from same books.
I feel like no matter how much I learn about C+
> +, there is a whole world yet unlearned.
True. Same can be said of any non-trivial PL but C++ IMHO is slightly special:
first, its definition is overcomplicated in the areas that matter, second, being
used more often than .Net and other higher-level tools for performance-critical
apps, it makes its practitioners know relatively more about OS and hardware to
stay useful and OS and hardware are changing much faster in
meaningful-for-performance ways than mathematical or linguistic concepts needed
to master a programming language as such or even engineering concepts involved
in writing good software.
-Pavel