Как передать диапазон массива в базовый класс? Если это невозможно, как насчет передачи константной ссылки на массив? Проблема в том, что и диапазон, и массив требуют явного размера в качестве аргумента шаблона, поэтому базовому классу нужен этот размер. В настоящее время я делаю это с вектором.
Я пытаюсь сделать что-то вроде:
enum Seasons {
Spring, Summer, Fall, Winter
};
struct Base {
template<size_t N>
Base(std::span<Seasons, N> list) {}
};
struct Derrived : Base {
inline static const std::array mValues = {
Spring, Winter
};
Derrived() : Base(???) {}
};
Для вывода параметров шаблона std::span
необходимо вызвать конструктор:
struct Base {
template <std::size_t N>
Base(std::span<const Seasons, N> list) {}
// ^^^^^
// T must be const for const std::array
};
struct Derrived : Base {
inline static const std::array mValues = {Spring, Winter};
Derrived() : Base(std::span(mValues)) {}
};
Да, дело было в «const» в диапазоне. Спасибо!
Что ожидается в
???
?