Законно ли инициализировать массив через функтор, который принимает сам массив в качестве параметра по ссылке?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Законно ли инициализировать массив через функтор, который принимает сам массив в качестве параметра по ссылке?

Сообщение Anonymous »

В вопросе Идиома для инициализации std::array с использованием функции-генератора, принимающей индекс?, который по сути спрашивает, как можно инициализировать массив произвольного типа, который не обязательно является конструктивным по умолчанию, Я придумал следующее (весьма нестандартное) решение.

Код: Выделить всё

#include 
#include 
#include 
#include 

struct Int{
int v;
Int(int v):v{v}{}
};

int main()
{
auto gen = [](size_t i) { return  Int(11*(i+1)); };
std::array arr = [&arr, &gen](){
for(std::size_t i=0; i < arr.size(); i++)
new (arr.data() + i) Int(gen(i));
return arr;
}();
for(auto i : arr) { std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78673013/is-it-legal-to-initialize-an-array-via-a-functor-which-takes-the-array-itself-as[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»