for_each_arg: Вызов функции для каждого аргумента функции
Вольный перевод статьи . Как вызвать функцию для каждого аргумента другой функции? Например, у нас есть функция template < typename . . . Args > void g ( Args && . . . args ) { // ... } и мы хотим применить некую функцию f к каждому аргументу функции g. Требуется некий for_each_arg, который позволит выполнить следующее: template < typename . . . Args > void g ( Args && . . . args ) { for_each_arg ( f , args . . . ) ; } Как это решить с компилятором, не поддерживающим C++17? Используем std :: initializer_list, в список аргументов которого будем передавать результаты вызовов f c аргументами args: std :: initializer_list < ? > { ( f ( args ) ) . . . } Возникают проблемы: 1) Не знаем rvalue или lvalue передается в args - используем std::forward. 2) Какого типа элементы содержит std :: initializer_list < ? > . Допустим, что int, но функция f не обязана возвр...