Size: a a a

2021 March 16

ID

In Dev in pro.cxx
Я правда не уверен как правильно раскрыть фолд
источник

KO

Konstantin Osipov in pro.cxx
а они разные должны быть. там случайными данными заполняется в create_server_funс()
источник

D

Danya in pro.cxx
In Dev
А что-то вроде
template<size_t N, typename ... Args>
std::array<Server, N>
create_cluster(Args && ... args)
{
   return std::array<Server, N>(Server(std::forward<Args>(args)), ...);
}

Нельзя?
Здесь fold про другое
источник

ID

In Dev in pro.cxx
Konstantin Osipov
а они разные должны быть. там случайными данными заполняется в create_server_funс()
А, ясно
источник

ID

In Dev in pro.cxx
Чисто из любопытства, как мой вариант правильно раскрыть?
источник

NK

Nikolay Kononov in pro.cxx
надо еще void дописать чтобы не работала перегрузка запятой
источник

NK

Nikolay Kononov in pro.cxx
а вообще так работает?
источник

D

Danya in pro.cxx
Nikolay Kononov
надо еще void дописать чтобы не работала перегрузка запятой
Тот кто перегружает запятую — сам виноват
источник

N

Neargye in pro.cxx
In Dev
А что-то вроде
template<size_t N, typename ... Args>
std::array<Server, N>
create_cluster(Args && ... args)
{
   return std::array<Server, N>(Server(std::forward<Args>(args)), ...);
}

Нельзя?
template<typename ... Args>
std::array<Server, sizeof...(Args)>
create_cluster(Args && ... args)
{
   return {{(std::forward<Args>(args), ...)}};
}
источник

N

Neargye in pro.cxx
Konstantin Osipov
а они разные должны быть. там случайными данными заполняется в create_server_funс()
ну тогда вариант как to_array и чтобы create_server_funс принимал индекс?
источник

KO

Konstantin Osipov in pro.cxx
Neargye
template<typename ... Args>
std::array<Server, sizeof...(Args)>
create_cluster(Args && ... args)
{
   return {{(std::forward<Args>(args), ...)}};
}
вот этот вариант мне нравится.
источник

N

Neargye in pro.cxx
Konstantin Osipov
вот этот вариант мне нравится.
Ток проверьте что там норм соберется,  я проверял на пустышках
но вроде рво сработает даже без мува
источник

KO

Konstantin Osipov in pro.cxx
std::make_integer_sequence взрывает мозг. он возвращает тип, параметризованный нужным числом N?... чтобы потом можно было проитерировать по параметрам типа?... жесть какая
источник

N

Neargye in pro.cxx
Konstantin Osipov
std::make_integer_sequence взрывает мозг. он возвращает тип, параметризованный нужным числом N?... чтобы потом можно было проитерировать по параметрам типа?... жесть какая
он вернет тип std::integer_sequence<T, /* a sequence 0, 1, 2, ..., N-1 */ >;
где Т size_t
источник

N

Neargye in pro.cxx
это нужно чтобы развенуть нам экспрешн оп индексам
источник

KO

Konstantin Osipov in pro.cxx
программирование с помощью сайд-эффектов...
источник

N

Neargye in pro.cxx
Konstantin Osipov
программирование с помощью сайд-эффектов...
ну тут как раз без сайд) ибо все в компилетайме
источник

KO

Konstantin Osipov in pro.cxx
Я имею ввиду, что стоит задача сделать compile-time итерацию, фактически, и вот чтобы не вносить в язык новых синтаксических конструкций для этой типичной по сути задачи, вносятся хелперы в виде make_integer_sequence и fold expressions...
источник

N

Neargye in pro.cxx
Konstantin Osipov
Я имею ввиду, что стоит задача сделать compile-time итерацию, фактически, и вот чтобы не вносить в язык новых синтаксических конструкций для этой типичной по сути задачи, вносятся хелперы в виде make_integer_sequence и fold expressions...
аа, ну так все лучше чем рекурсией по шаблонам как в 98ом
источник

KO

Konstantin Osipov in pro.cxx
В питоне, если ты хочешь проитерировать по аргументам функции можно просто вызвать locals(), она вернёт что-то вроде std::array если говорить С++ языком. Ничто не мешало сделать то же самое в С++ для  variadic template, просто сделать built-in который бы вернул все аргументы variadic template в виде std::tuple.
источник