{}
run-icon
main.cpp
#include <iostream> #include <array> // Шаблонная структура для вычисления арифметической прогрессии template<typename T, T Start, T Difference, size_t Index> struct ArithmeticProgression { static constexpr T value = Start + Index * Difference; }; // Рекурсивная структура для генерации массива template<typename T, T Start, T Difference, size_t... Indices> constexpr std::array<T, sizeof...(Indices)> generateProgression(std::index_sequence<Indices...>) { return { ArithmeticProgression<T, Start, Difference, Indices>::value... }; } // Основной шаблон функции для вычисления прогрессии template<typename T, T Start, T Difference, size_t Count> constexpr auto makeArithmeticProgression() { return generateProgression<T, Start, Difference>(std::make_index_sequence<Count>{}); } int main() { // Генерация арифметической прогрессии во время компиляции constexpr auto progression = makeArithmeticProgression<int, 1, 2, 10>(); // Вывод результата std::cout << "Arithmetic progression: "; for (auto num : progression) std::cout << num << " "; std::cout << std::endl; return 0; }
Output