How exactly is expansion of aparameter pack evaluated with std::forward?

I wanted to better understand parameter pack expansions, so I decided to research a bit and, what once seemed obvious to me, stopped being so obvious after trying to understand what exactly is going on. Let’s examine a standard parameter pack expansion with std::forward: template <typename… Ts> void foo(Ts&& … ts) { std::make_tuple(std::forward<Ts>(ts)…); } My…

Details