1) Безопасность исключений + RAII. Потому что это та часть, в которой я считаю C ++ очень отличным от других языков, которые я знаю. В C ++ легче выполнять обработку исключений, если вы понимаете правила и почему они установлены таким образом, особенно как извлечь выгоду из RAII при обработке исключений.
2) Введение в C ++ 0x. Потому что я не могу больше ждать четвертого издания языка программирования C ++;) Если у вас есть возможность изучить некоторые полезные возможности, вы будете готовы к переходу.
Неясно, было ли это учтено в ваших имеющихся знаниях, поэтому стоит обратить внимание на несколько «продвинутых основ»:
и, возможно, программирование с графическим интерфейсом пользователя, хотя, скорее всего, это отдельный курс.
Создание COW ( Копирование при записи ) Класс строки?
Концепции C ++ , которые, если в конечном итоге будут приняты, позволят проверять типы шаблонов и получать разумные сообщения об ошибках. Вы можете изучить недавние статьи Джереми Сика, Габриэля Дос Пассоса и Бьярна Страуструпа.
Кроме того, если вы только начали с C ++ и не пришли из чистого C, возможно, стоит пойти в направлении низкого уровня, а не в направлении высокого уровня:
Сколько метапрограммирования шаблонов вы сделали? Это заслуживает полного курса, поэтому, если это воспламенило ваше воображение, вы, возможно, захотите углубиться в это дальше. Глубокое погружение в программирование шаблонов позволит вам далеко продвинуться в современном программировании на C ++.
Шаблоны, создание реальных приложений, проектирование архитектуры приложений и т. Д. Все остальное (вы упомянули библиотеки ускорения, STL и т. Д.) Можно легко обнаружить, занимаясь самообразованием, но научиться хорошему и рациональному дизайну намного сложнее.
Я бы сказал лямбда, либо в ускорении, либо в C ++ 0x. Скорее всего, это не то, что люди найдут сами, но я думаю, что это позволяет значительно сократить объем кода и обслуживание. Кроме того, определенным образом меняет ваш взгляд на программирование. кроме того, он дает хорошее введение в функциональное программирование.
например, вы можете очень кратко отсортировать коллекцию, используя какое-то странное требование:
std:: sort(begin, end, lambda::_1 + lambda::_2 > 0);
Я бы также добавил выражения шаблона. В настоящее время я играю с ними, они являются мощным инструментом для создания очень эффективного кода, сохраняя при этом очень близкое сходство с описанием проблемы. плюс, я не думаю, что какой-либо другой язык имеет аналогичные возможности. http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Expression-template