Как назвать контейнер, который вычисляет значения элементов на лету?

У меня есть примерно такой код.

// Функциональный объект, для простоты вопроса его смысл
// просто посчитать значение определенным образом.
struct my_functor{
  int operator()(int x) const {
    return (x * x + 17) / 2 + 1;
  }
};

template<class Functor, size_t Size>
struct my_container{
  public:
    decltype(auto) operator[](int n) const {
      return std::visit(_functor, n);
    }
   
    // Также реализованы функции begin, end.

  private:
    Functor _functor;
};

int main(){
  my_container<my_functor, 10> cont;
  
  // Использование operator[].
  std::cout << cont[1] << std::endl;    

  // Использование функций begin, end контейнера.
  for(int value: cont){
    std::cout << value << ", ";
  }
}

Если коротко, то реализован контейнер, который вычисляет значение элемента этого контейнера через специальный функциональный объект (так называемый функтор). То есть в контейнере хранится только размер и функция, через которую вычисляется значение элемента.

И весь вопрос в том, как назвать такой контейнер? Наверное, я не первый, кто до этого додумался, и у такого контейнера (или паттерна) есть какое-нибудь красивое название.


Ответы (1 шт):

Автор решения: HolyBlackCat

Может "range"? В C++20 так называют и контейнеры, и классы, которые притворяются контейнерами, как ваш.

→ Ссылка