Информация об изменениях

Сообщение Re: хитрая конструкция от 06.03.2015 12:41

Изменено 06.03.2015 12:42 Abyx

Здравствуйте, Hard_Club, Вы писали:

H_C>
H_C>template <class F, class... Args>
H_C>    void fa(F f, Args&&... args) {
H_C>        [](...){}((f(std::forward<Args>(args)), 0)...);
H_C>}
H_C>


это неправильная конструкция, f вызовется для аргументов в произвольном порядке.
правильно использовать массив или список инициализации
(void)std::initializer_list<int>{(f(std::forward<Args>(args)), void(), 0)...};
Re: хитрая конструкция
Здравствуйте, Hard_Club, Вы писали:

H_C>
H_C>template <class F, class... Args>
H_C>    void fa(F f, Args&&... args) {
H_C>        [](...){}((f(std::forward<Args>(args)), 0)...);
H_C>}
H_C>


это неправильная конструкция, f вызовется для аргументов в произвольном порядке.
правильно использовать массив или список инициализации
(void)std::initializer_list<int>{(f(std::forward<Args>(args)), void(), 0)...};


btw можно еще подискутировать как это называется тут — http://stackoverflow.com/questions/28887549/how-to-call-the-idiom-of-using-an-array-to-apply-a-function-to-a-variadic-pack