Этот код
#include <array>
void foo(const int length) {
std::array<int, length> arr; //line 4
}
int main(){
const int length = 10;
std::array<int,length> arr;
}
завершается с сообщением об ошибке
: в функции 'void foo (size_t)':
: 4: 27: ошибка: длина не является постоянным выражением
std::array<int, length> arr;
https://gcc.godbolt.org/z/MMQXHx
Параметр length
помечен как const
.
Почему невозможно передать константную длину локального std::array
в качестве параметра функции?
Почему это работает в основном методе?
Я знаю, что такой шаблонный подход будет работать
template <size_t length>
void foo() {
std::array<int, length> arr;
}