У цій книзі відображено безцінний досвід її автора як програміста на C++. Нові можливості цієї мови програмування, що з'явилися в стандартах C++11 і C++14, - це не просто нові ключові слова чи функції, це поява зовсім нових концепцій, тож для їхнього ефективного використання недостатньо просто дізнатися про їхнє існування та програмувати C++11 як дещо поліпшеним та функціонально розширеним C++98.
Коли відбуваються такі глобальні зміни в мові програмування, їхньому вивченню слід присвятити певний час, написати сотні, а ще краще - тисячі рядків коду, і зіткнутися з безліччю проблем, які здаються тим більш дивними та незрозумілими, чим більшим досвідом роботи з C++98 ви володієте. До програмування повною мірою стосується фраза Евкліда про те, що в геометрії немає царських шляхів. Але пройти шлях вивчення й освоєння нової мови програмування вам може допомогти провідник, який показує найцікавіші місця і попереджає про ями та вибоїни. Таким провідником може послужити книга Скотта Мейєрса. З нею ви не заблукаєте і не забредете в нетрі, з яких будете довго і важко вибиратися за допомогою відладчика.
При цьому книга не просто навчить вас використовувати нові можливості мови - вона навчить використовувати їх ефективно. Але і це не все - книжка не просто вчить ефективного застосування C++, а ще й розповідає, чому ту чи іншу задачу слід вирішувати саме так.
Ця книга змушує вас не просто завчити правила - вона змушує думати.
І хоча ця книга насамперед призначена для ентузіастів і професіоналів, вона гідна місця на полиці будь-якого програміста - як професіонала, так і зеленого новачка.
Освоєння C++11 і C++14 - це більше, ніж просто ознайомлення з можливостями, що вводяться цими стандартами (наприклад, оголошеннями типів auto, семантикою переміщення, лямбда-виразами або підтримкою багатопоточності). Питання в тому, як використовувати їх ефективно - так, щоб створювані програми були коректні, ефективні та переносимі, а також щоб їх легко можна було супроводжувати.
Саме цим питанням і присвячена ця книга, що описує створення по-справжньому хорошого програмного забезпечення з використанням C++11 і C++14 - тобто з використанням сучасного C++.
У книзі розглядаються такі теми
Переваги та недоліки ініціалізації за допомогою фігурних дужок, специфікації noexcept, прямого передавання та функцій make інтелектуальних покажчиків
Зв'язок між std::move, std::forward, rvalue-посиланнями та універсальними посиланнями
Методи написання зрозумілих, коректних, ефективних лямбда-виразів
Чим std::atomic відрізняється від volatile, як вони використовуються і як співвідносяться з API паралельних обчислень C++
Які з найкращих методів "старого" програмування на C++ (тобто C++98) мають бути переглянуті під час роботи із сучасним C++
Ефективний і сучасний C++, слідуючи принципам більш ранніх книг Скотта Мейерса, охоплює абсолютно новий матеріал. Ця книга гідна зайняти своє місце на полиці кожного програміста.