Эффективный и современный С++. 42 рекомендации по использованию С++11 и С++14 | страница 4
”. Пример >std::pair
/>std::pair
в том же разделе книги взят из сообщения “STL11: Magic && Secrets” Стивена T. Лававея на Going Native 2012. Раздел 2.2 появился благодаря статье Герба Саттера (Herb Sutter) “GotW #94 Solution: AAA Style (Almost Always Auto)” от 12 августа 2013 года, а раздел 3.3 — благодаря сообщению в блоге Мартинго Фернандеса (Martinho Fernandes) от 27 мая 2012 года — “Handling dependent names”. Пример в разделе 3.6 демонстрирует перегрузку квалификаторов ссылок, основанную на ответе Кейси (Casey) на вопрос “What's а use case for overloading member Junctions on reference qualifiers?” в сообществе Stack Overflow от 14 января 2014 года. В разделе 3.9 описание расширенной поддержки >constexpr
-функций в С++14 включает информацию, которую я получил от Рейна Халберсма (Rein Halbersma). Раздел 3.10 основан на презентации Герба Саттера на конференции С++ and Beyond 2012 под названием “You don't know >const
и >mutable
”. Совет в разделе 4.1, гласящий, что фабричная функция должна возвращать >std::unique_ptr
, основан на статье Герба Саттера “GotW# 90 Solution: Factories” от 13 мая 2013 года. >fastLoadWidget
в разделе 4.2 получен из презентации Герба Саттера “My Favorite С++ 10-Liner” на конференции Going Native 2013. В моем описании >std::unique_ptr
и неполных типов в разделе 4.5 использованы статья Герба Саттера от 27 ноября 2011 года “GotW #100: Compilation Firewalls”, а также ответ Говарда Хиннанта (Howard Himant) от 22 мая 2011 года на вопрос в Stack Overflow “Is>std::unique_ptr
required to know the full definition of>T
?” Дополнительный пример >Matrix
в разделе 5.3 основан на письме Дэвида Абрахамса (David Abrahams). Комментарий Джо Аргонна (Joe Argonne) от 8 декабря 2012 года к материалу из блога “Another alternative to lambda move capture” от 30 ноября 2013 года стал источником для описанного в разделе 6.2 подхода к имитации инициализации на основе >std::bind
в C++11. Пояснения в разделе 7.3 проблемы с неявным отключением в деструкторе >std::thread
взяты из статьи Ганса Бехма (Hans-J. Boehm) “N2802: А plea to reconsider detach-on-destruction for thread objects” от 4 декабря 2008 года. Раздел 8.1 появился благодаря обсуждению материала в блоге Дэвида Абрахамса “Want speed? Pass by value” от 15 августа 2009 года. Идея о том, что типы, предназначенные только для перемещения, должны рассматриваться отдельно, взята у Мэттью Фьораванте (Matthew Fioravante), в то время как анализ копирования на основе присваивания взят из комментариев Говарда Хиннанта (Howard Hinnant). В разделе 8.2 Стивен T. Лававей и Говард Хиннант помогли мне понять вопросы, связанные с относительной производительностью функций размещения и вставки, а Майкл Винтерберг (Michael Winterberg) привлек мое внимание к тому, как размещение может приводить к утечке ресурсов. (Майкл, в свою очередь, называет своим источником презентацию “