template<typename...Args> void foo(Args...args) { ((args, boo()),...); }
всё равно не выходит у данилы каменный цветок. На этот раз в том что я не могу добиться mandatory copy elision. Я возвращаю std::array<Server, N>, но мне перед возвратом необходимо этот массив обработать. Сооветственно если я делаю return std::array, всё работает. Если я декларирую std::array не стэке, а затем его возвращаю, компилятор требует наличия в Server move/copy constructor . Есть какие-то хаки чтобы mandatory copy elision работала но при этом перед возвратом объект можно было как-то обработать?
Что насчёт того, чтобы сделать как я показывал? Обработка будет происходить до того, как создастся массив, в лямбде, которая создаёт объект
кажется нет хаков
Создать копию std::array с поэлементным мувом, вроде, все для этого есть
Всегда можно создать массив а потом принимать его по ссылке auto m = create(); test1(m); test2(m);
Обсуждают сегодня