Boost FFT Example - ошибка при компиляции, что делает этот код? - PullRequest
3 голосов
/ 05 октября 2019

Я следую примеру по следующей ссылке:

https://www.boost.org/doc/libs/1_55_0/libs/math/doc/html/math_toolkit/high_precision/use_multiprecision.html

Я получаю сообщение об ошибке в следующей строке:

[&n](cpp_dec_float_50& y)


g++ -I ../boost_1_71_0 fft.cpp -o fft
fft.cpp:52:3: error: expected expression
  [&n](cpp_dec_float_50& y)
  ^
1 error generated.

Полный блокэто:

// Generate the sine values.
std::for_each
(
  sin_values.begin (),
  sin_values.end (),
  [&n](cpp_dec_float_50& y)
  {
    y = sin( pi<cpp_dec_float_50>() / pow(cpp_dec_float_50 (2), n));
    ++n;
  }
);

Что на самом деле делает "[& n] (cpp_dec_float_50 & y)"? И почему он ошибается?

1 Ответ

2 голосов
/ 05 октября 2019

Что на самом деле делает [&n](cpp_dec_float_50& y)

Это первая часть лямбда-выражения , т.е. анонимной функции.

И почему он дает ошибку?

Вам необходимо скомпилировать для C ++ 11 (или выше). Используйте -std=c++11 (или -std=c++14 или -std=c++17) в командной строке компилятора. например :

g++ -std=c++11 ...
...