В этом разделе объясняется, как настроить систему для использования этой библиотеки.
Программисты должны иметь достаточно знаний, чтобы использовать эту библиотеку после прочтения разделов Введение , Начало работы и Источник . С разделами Advanced Topics и Reference можно ознакомиться позже, чтобы получить более глубокие знания о библиотеке. Все остальные разделы данной документации можно считать факультативными.
Некоторые сноски обозначены словом « Обоснование». Они объясняют причины решений, принятых при проектировании и реализации этой библиотеки.
В большинстве примеров, представленных в данной документации, буст. Detail/LightweightTest (boost/detail/lightweight_test.hpp
) BOOST_TEST
используется для проверки условий корректности. Макрос BOOST_TEST
концептуально похож на assert
, но отказ проверенного состояния не прерывает программу, вместо этого он заставляет boost::report_errors
возвращать ненулевой код выхода программы.
Реализация этой библиотеки использует препроцессорное и шаблонное метапрограммирование (при поддержке Boost.Preprocessor и Boost.MPL), шаблоны с частичными специализациями и указателями функций (аналогично Boost.Function) и автоматическую дедукцию типа (при поддержке Boost.Typeof). Авторы первоначально разработали и протестировали библиотеку на:
- GNU Compiler Collection (GCC) C++ 4.5.1 на Ubuntu Linux 10.
- GCC 4.3.4 и 4.5.3 (с функциями C++11 и без них включено
-std=c++0x
) на Cygwin.
- Miscrosoft Visual C++ (MSVC) 8.0 для Windows XP и Windows 7.
Для получения подробной информации о поддерживаемых компиляторах и платформах см. библиотеку regressions test results.
Эта библиотека состоит только из файлов заголовка. Поэтому не существует предварительно скомпилированного объектного файла, который должен быть установлен или связан. Программисты могут просто инструктировать компилятор C++, где найти файлы заголовка библиотеки (-I
опция для GCC, /I
опция для MSVC и т.д.), и они могут начать компиляцию кода с помощью этой библиотеки.
Реализация библиотеки использует Boost.Typeof для автоматического вывода типов связанных переменных (см. раздел Tutorial). Для компиляции кода в режиме эмуляции типа все типы должны быть надлежащим образом зарегистрированы с использованием BOOST_TYPEOF_REGISTER_TYPE
и BOOST_TYPEOF_REGISTER_TEMPLATE
или соответствующих заголовков Boost.Typeof (см. исходный код большинства примеров, представленных в этой документации).
Следующие элементы являются частью частного API библиотеки, они не документируются и не должны использоваться программистами напрямую:
- Любой символ, определяемый файлами в каталоге
boost/local_function/aux_/
или boost/local_function/detail/
(эти файлы заголовка не должны быть непосредственно включены программистами).
- Любой символ в пределах
boost::local_function::aux
или boost::local_function::detail
namespace.
- Любой символ, префиксированный
boost_local_function_aux_...
или boost_local_function_detail_...
(независимо от его пространства имен).
- Любой символ, префиксированный
BOOST_LOCAL_FUNCTION_AUX_...
или BOOST_LOCAL_FUNCTION_DETAIL_...
(независимо от его пространства имен).
Некоторое поведение библиотеки может быть изменено во время компиляции путем определения специальных макросов конфигурации . Если макрос конфигурации не определен, библиотека будет использовать соответствующее значение по умолчанию для него. Все макросы конфигурации определены в файле заголовка boost/local_function/config.hpp
. Настоятельно рекомендуется не менять макроопределения конфигурации библиотеки, если это не является строго необходимым.