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