https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103448

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #5)
> (In reply to Andrew Pinski from comment #3)
> > Yes it is called the copy (or move) constructor :).
> 
> That is:
>   auto t = std::tuple(std::tuple(1,2));
>   std::cout << type_name<decltype(t)>() << std::endl;
> 
> Will produce the same result.

Or:

  auto t1 = std::tuple(1,2);
  auto t = std::tuple(t1);
  std::cout << type_name<decltype(t)>() << std::endl;

There is no magic going on here, just a copy constructor happening which it
looks like you forgot about.

Reply via email to