2016-06-09 2 views
1

Я установил boost (1.60.0) в Linux Mint 17.3 Rosa и попытался скомпилировать пример накопительного аккумулятора (http://www.boost.org/doc/libs/1_60_0/doc/html/accumulators/user_s_guide.html) с помощью gcc-компилятора (v 4.8.4 64 бит) с помощью этой команды:пример накопительных аккумуляторов не компилируется

>g++ -o exaccu exaccumulator.cpp -I/usr/local/lib/boost_1_60_0/ 

Компиляция не удалась с длинным списком сообщений об ошибках, начиная с:

>exaccumulator.cpp: In function ‘int main()’: 
>exaccumulator.cpp:22:32: error: ‘accumulators’ has not been declared 
>std::cout << "Moment: " << accumulators::moment<2>(acc) << std::endl; 

После поиска accumulators.hpp я изменил аккумуляторы :: моментных < 2> в момент < 2>. Это сделал трюк и компиляция (с теми же флагами). В качестве альтернативы также использовались префиксы «аккумуляторы» с «boost :: аккумуляторами»: момент < 2> ». Поэтому мой вопрос: что-то не так с моей установкой boost или есть опечатка в примере из учебника?

+0

Я представил PR, чтобы исправить пример: https://github.com/boostorg/accumulators/pull/4 – Praetorian

ответ

0

Это действительно опечатка.

Вы можете использовать весь boost пространство имен (плохая идея), чтобы сделать пример компиляции:

using namespace boost; 
accumulators::moment<2>(acc); 

Или, как вы уже сделали, просто удалите accumulators:: specificier и использовать только namespace boost::accumulators;.

Или просто укажите его полное имя: boost::accumulators::moment<2>(acc).

Смежные вопросы