Сообщение Zero-cost метод вызвать функцию для каждого шаблонного парам от 14.10.2020 21:10
Изменено 14.10.2020 21:11 Molchalnik
Zero-cost метод вызвать функцию для каждого элемента шаблона
Disclaimer: Вопрос баян и велосипед, но у меня свой интерес, заточенный под определённую специфику применения.
Задача: изобрести zero-cost метод вызвать функцию для каждого элемента шаблона
Классика — рекурсия на шаблонах — не подходит, потому что генерит кучу лишних функций и за счёт раздувания кода её нельзя считать zero-cost. Плюс рекурсивные вызовы лишних функций.
Мой вариант тут (копия под катом), но он мне не нравится, т.к. работает только для функторов, и даже лямбду без бубна не подставишь. А хотелось бы иметь возможность использовать и для функции. Или хотя бы, чтобы были две функции — одна для функтора, другая для шаблонной функции
Можно ли сделать поэлегантней?
Только так, чтобы функция задавалась как параметр — шаблонный или обычный, не важно. Плюс, последовательность выполнения должна соответствовать последовательности следования аргументов.
Вот ещё несколько вариантов на стэковерфлоу
Задача: изобрести zero-cost метод вызвать функцию для каждого элемента шаблона
Классика — рекурсия на шаблонах — не подходит, потому что генерит кучу лишних функций и за счёт раздувания кода её нельзя считать zero-cost. Плюс рекурсивные вызовы лишних функций.
Мой вариант тут (копия под катом), но он мне не нравится, т.к. работает только для функторов, и даже лямбду без бубна не подставишь. А хотелось бы иметь возможность использовать и для функции. Или хотя бы, чтобы были две функции — одна для функтора, другая для шаблонной функции
| Копия кода | |
| |
Можно ли сделать поэлегантней?
Только так, чтобы функция задавалась как параметр — шаблонный или обычный, не важно. Плюс, последовательность выполнения должна соответствовать последовательности следования аргументов.
Вот ещё несколько вариантов на стэковерфлоу
Zero-cost метод вызвать функцию для каждого шаблонного парам
Disclaimer: Вопрос баян и велосипед, но у меня свой интерес, заточенный под определённую специфику применения.
Задача: изобрести zero-cost метод вызвать функцию для каждого шаблонного параметра
Классика — рекурсия на шаблонах — не подходит, потому что генерит кучу лишних функций и за счёт раздувания кода её нельзя считать zero-cost. Плюс рекурсивные вызовы лишних функций.
Мой вариант тут (копия под катом), но он мне не нравится, т.к. работает только для функторов, и даже лямбду без бубна не подставишь. А хотелось бы иметь возможность использовать и для функции. Или хотя бы, чтобы были две функции — одна для функтора, другая для шаблонной функции
Можно ли сделать поэлегантней?
Только так, чтобы функция задавалась как параметр — шаблонный или обычный, не важно. Плюс, последовательность выполнения должна соответствовать последовательности следования аргументов.
Вот ещё несколько вариантов на стэковерфлоу
Задача: изобрести zero-cost метод вызвать функцию для каждого шаблонного параметра
Классика — рекурсия на шаблонах — не подходит, потому что генерит кучу лишних функций и за счёт раздувания кода её нельзя считать zero-cost. Плюс рекурсивные вызовы лишних функций.
Мой вариант тут (копия под катом), но он мне не нравится, т.к. работает только для функторов, и даже лямбду без бубна не подставишь. А хотелось бы иметь возможность использовать и для функции. Или хотя бы, чтобы были две функции — одна для функтора, другая для шаблонной функции
| Копия кода | |
| |
Можно ли сделать поэлегантней?
Только так, чтобы функция задавалась как параметр — шаблонный или обычный, не важно. Плюс, последовательность выполнения должна соответствовать последовательности следования аргументов.
Вот ещё несколько вариантов на стэковерфлоу