Минусов много, перечислять долго.
Если бы серьёзных минусов не было, то на C++, кроме обычных приложений, давно бы писали ОС.
Но нет, не пишут.
Один раз попробовали написать на C++ рабочий стол для Linux - тот самый KDE. Получилось такое дерьмо, которым никто не рискует пользоваться.
Очень сложно, трудно изучать, мало информации.
И для чего? Твоя з\п и отношение коллег все равно будут зависеть от твоего опыта. В том числе и от того, первая это твоя работа или нет. Если первая, то от адекватности компании. В неадекватной выше миддла не поднимешься никак, а то и джуна.
Единственное, в теории можно через работу в компании найти другую работу. Где ты будешь один, без команды, и тебя будут ценить, потому что C++ мало кто умеет, а какой-нибудь JS умеют многие хотя бы номинально.
Но я не думаю, что этот довод столь серьезен. Тем более без команды тебе вряд ли будут платить больше 100 т.р. Стать в команде сеньором и далее тимлидом - гораздо выгоднее. А это уже можно и на любом другом популярном языке.
Препроцессор, которым имитируют модульность. Нормальная модульность в языке появилась совсем недавно - комитет по стандартизации много лет демонстративно "не замечал" просьб разработчиков. Препроцессор же - архаизм 1960-х годов, без которого современные языки прекрасно обходятся.
Низкоуровневые механизмы, которые можно бесконтрольно использовать в любом месте кода. В современных языках низкоуровневые механизмы явно отделяются от нормального кода блоками unsafe.
UB. Соглашения, реализованные компиляторами, позволяют наступить на грабли UB в самых неожиданных местах. Такого бреда с "неопределённым поведением", как в C/C++, нет больше ни в одном языке высокого уровня.
Отсутствие ортогональности: язык содержит множество механизмов, делающих одно и то же разными способами. Это очень сильно раздувает язык и резко усложняет изучения зыка. И самое грустное, что этот зоопарк никак не увеличивает область использования языка. Такое ощущение, что в язык бездумно пихают всё, что модно на момент принятия очередного стандарта.
Слишком развесистые средства обобщенного программирования, представляющие собой отдельный тьюринг-полный язык. Фактически, посредством шаблонов можно написать полноценную программу, которая в процессе компиляции будет генерировать код программы. Это очень любит Александреску (который "modern design...". Но читать такой код-годоволомку - занятие для мазохистов.
Множественное наследование, создающее больше проблем, чем решающее. Интерфейсы в более поздних языках обеспечивают намного более надёжную реализацию в точности тех же возможностей.