пример повышения аккумуляторов не компилируется

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

>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;

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

1

Решение

Кажется, это действительно опечатка.

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

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

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

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

0

Другие решения

Других решений пока нет …