Передача по ссылке или по значению?

Когда я начинал программировать на C++ и усиленно штудировал книги и статьи, то неизменно натыкался на один и тот же совет: если нам нужно передать в функцию какой-то объект, который не должен изменяться в функции, то он всегда должен передаваться по ссылке на константу (ППСК), за исключением тех случаев, когда нам нужно передать либо примитивный тип, либо сходную с оными по размеру структуру. Т.к. за более чем 10 лет программирования на C++ я очень часто встречался с этим советом (да и сам его давал неоднократно), он давно «впитался» в меня — я на автомате передаю все аргументы по ссылке на константу. Но время идёт ... [Ещё]

Обзор книги Optimized C++: Proven Techniques for Heightened Performance

Книга написана в 2016 году Куртом Гунтеротом (Kurt Guntheroth), и похоже, что это его первая книга. Наткнулся на неё я случайно, когда покупал что-то другое на Amazon. Но покупать не стал. Через какое-то время она снова всплыла в моём поле зрения, когда один из пользователей русской часть StackOverflow порекомендовали мне её. Учитывая то, что я на неё внимание обратил сам, да ещё и получил рекомендацию в конце концов я решил её приобрести. Тем более, что стоящих книг по C++ не так много, а по оптимизации и того меньше — все куда-то подевались. Да и репутация O'Reilly тоже сделала своё дело; будь эта книга любого другого издательства (кроме Addison Wesley), я бы скорее всего пренебрёг. [Ещё]

Языковые новшества C++17. Часть 4. Сборная солянка.

Эта статья является последней в цикле, посвящённом новшествам стандарта C++17 в части языка. Здесь мы рассмотрим несколько интересных и полезных мелочей, которые по тем или иным причинам не вошли в другие статьи цикла. [Ещё]

Языковые новшества C++17. Часть 3. Порядок и спокойствие

Продолжаем знакомиться с языковыми новшествами стандарта C++17. В настоящей статье мы рассмотрим то, что я бы назвал продолжением облагораживания языка. Т.е. никаких совершенно новых, с точки зрения функционала, вещей мы тут не увидим — скорее приведение старого функционала в более приемлемое состояние. Здесь мы рассмотрим: что изменилось с порядком исполнения подвыражений, какие новые гарантии появились в части исключения необязательного копирования, а также что нового добавили в лямбды. [Ещё]

Обзор книги Mercurial: The Definitive Guide

Книга написана в 2009 году Брайаном О’Салливаном (Bryan O'Sullivan), одним из авторов распределённой системы управления версий Mercurial. Для человека, который решил познакомиться с Mercurial и озадачился поиском книги по нему, нет никакой сложности наткнуться на эту книгу — других просто нет. Нет, ... [Ещё]

Языковые новшества C++17. Часть 2. Constexpr и привязки

Продолжаем знакомиться с нововведениями в языке, принятыми в стандарте C++17. В настоящей статье речь пойдет о constexpr if и структурных привязках (structured bindings). Как и в прошлой статье напоминаю, что не все компиляторы могут поддерживать описанное в статье. [Ещё]

Обзор книги Algorithms Unlocked

Книга написана в 2013 году Томасом Корменом (Thomas H. Cormen), человеком, который является одним из четырёх авторов знаменитой книги Introduction to Algorithms (CLRS). Я наткнулся на эту книгу совершенно случайно, когда находился в поисках какой-нибудь книги по алгоритмам, которая будет проще CLRS.... [Ещё]

Языковые новшества C++17. Часть 1. Свёртка и выведение

Процесс добавления и корректировки функционала, что должен составить C++17 наконец завершён, а посему можно приступать к его обзору. Т.к. нововведений, которые касаются непосредственно языка, в C++17 не так уж и много, а сами нововведения не слишком значительны, я решил объединить их все в одной статье. Решить то я решил, а потом начал писать. В результате, в этой статье описаны всего две новых функциональности: выражение свёртки и выведение шаблонных параметров класса. [Ещё]

Обзор книги Modern C++ Programming with Test-Driven Development

Книга написана в 2013 году Джефом Лангром (Jeff Langr), человеком, о котором я раньше никогда не слышал (позже тоже). Сейчас мне трудно сказать, что побудило меня обратить внимание на эту книгу — вероятнее всего, я просто случайно наткнулся на неё на Amazon, когда покупал что-то другое. [Ещё]

А есть ли функция?

В прошлой статье мы рассмотрели, что такое SFINAE и как оно работает, а в настоящей статье мы воспользуемся ранее полученными знаниями. Хотя она и не конкретно по SFINAE, скорее о метапрограммировании в общем. Здесь речь пойдёт о всего одной задаче, которая довольно успешно решается в C++: проверка ... [Ещё]