It works (At least on my system) this way:
#include <tuple>
template<class ...Arg>
class A
{
std::tuple<Arg...> tuple_;
public:
A(Arg&&...args):tuple_(std::forward<Arg>(args)...)
{
}
};
template<class...Arg>
void f(Arg&&...args)
{
A<Arg...> a(std::forward<Arg>(args)...);
}
int main()
{
long t = 5;
f(t,5);
return 0;
}
I guess (just a wild guess though) the reason beign such tuple ctor is (conditionally) explicit, see
std::tuple<types...>::tuple[
^].