Сообщения

Сообщения за март, 2019

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 не обязана возвр...