Если функция очень мала и критична по времени, объявите её `inline`
Причина
Некоторые оптимизаторы хорошо встраивают функции без подсказок от программиста, но не полагайтесь на это. Измеряйте! На протяжении последних 40 или около того лет нам обещали компиляторы, которые могут встраивать лучше, чем люди, без подсказок от людей. Мы всё ещё ждём. Указание inline (явно или неявно при написании функций-членов внутри определения класса) побуждает компилятор делать работу лучше.
Пример
inline string cat(const string& s, const string& s2) { return s + s2; }
Исключение
Не помещайте inline функцию в то, что предназначено быть стабильным интерфейсом, если вы не уверены, что она не изменится. inline функция является частью ABI.
Примечание
constexpr подразумевает inline.
Примечание
Функции-члены, определённые внутри класса, по умолчанию являются inline.
Исключение
Шаблоны функций (включая функции-члены шаблонов классов A<T>::function() и шаблоны функций-членов A::function<T>()) обычно определяются в заголовочных файлах и поэтому являются inline.
Примечание
Рассмотрите возможность делать функции не-inline, если они содержат более трёх операторов и могут быть объявлены не-inline (например, функции-члены класса).