Иногда C++ требуется более гибкий механизм параметризации функций.
Например, у нас есть функция с двумя обязательными параметрами и большим количеством необязательных.
Проблемы здесь могут быть следующиеbool foo(int important, int& pOut, int sometimes = 1, int occasionally = 2, int rarely = 3) { //.
}
- Пользователи постоянно путают порядок параметров; их типы почти полностью совпадают, поэтому компилятор не может помочь (разве что иногда со вторым параметром).
- Из необязательных параметров чаще всего нужен один, а если его нет иногда пользователи вынуждены запоминать значения по умолчанию, чтобы явно установить их при вызове.
Значения по умолчанию другие, поэтому ошибок снова много
- Невозможно выразить зависимость значений по умолчанию одних параметров от других.
Boost предлагает другое решение.
Этот именованные параметры .
Мы больше не привязаны к порядку параметров, а возможность указывать осознанные имена при вызове существенно снижает вероятность ошибок.
В качестве дополнительного бонуса мы получаем возможность использовать одни параметры при вычислении значения по умолчанию других.
В качестве примера рассмотрим, как можно определить функцию фу используя предложенный механизм (изменим название на NameParametersFoo во избежание путаницы).
Сначала мы подключаем заголовочный файл boost и определяем имена параметров с помощью специального макроса.
Обратите внимание – без знаков препинания.
#include <boost/parameter.hpp>
BOOST_PARAMETER_NAME(important)
BOOST_PARAMETER_NAME(pOut)
BOOST_PARAMETER_NAME(sometimes)
BOOST_PARAMETER_NAME(occasionally)
BOOST_PARAMETER_NAME(rarely)
далее мы устанавливаем функцию BOOST_PARAMETER_FUNCTION(
Теги: #boost #boost.parameter #параметры #функции #программирование #C++
-
Удаление Вредоносного По
19 Oct, 24 -
Понимание Тегов
19 Oct, 24 -
Блог Компании Z-Wave.me
19 Oct, 24 -
Что Такое Evpn/Vxlan
19 Oct, 24 -
Япония
19 Oct, 24