Parameter packs
< void write_csv(const auto dft, const std::string stem) {
< assert(not stem.empty());
< assert(std::size(dft) == bins<size_t> / 2);
<
< using T = decltype(dft)::value_type;
<
< if (std::ofstream csv_file{"csv/" + stem + ".csv"}; csv_file.good())
< std::ranges::copy(dft, std::ostream_iterator<T>(csv_file, "\n"));
---
> template <typename... Args>
> void write_csv(std::string_view file_name, Args... args) {
> ((std::ofstream{"csv/" + std::string{file_name} + ".csv"} << args << "\n"),
> ...);
> }
>
> template <std::size_t... Is>
> void CallDoStuff(std::string_view file_name,
> std::vector<float> const &vElements,
> std::index_sequence<Is...> const &) {
> write_csv(file_name, vElements[Is]...);
> }
>
> template <std::size_t N>
> void CallDoStuff(std::string_view file_name,
> std::vector<float> const &vElements) {
> CallDoStuff(file_name, vElements, std::make_index_sequence<N>{});
225c234
< write_csv(dft, "sine_wave");
---
> CallDoStuff<bins<size_t>>("sine_wave", dft);
260c269,270
< write_csv(dft, file.path().stem());
---
> const std::string csv_file = file.path().stem();
> CallDoStuff<bins<size_t>>(csv_file, dft);