[Bug c++/81279] variadic template regression : compiles without error under 5.4.0 , 6.3.0 with error under 7.1.0

jason.vas.dias at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Jul 2 15:32:00 GMT 2017


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

--- Comment #7 from Jason Vas Dias <jason.vas.dias at gmail dot com> ---
Created attachment 41665
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=41665&action=edit
Fixed version - also demonstrates point : addresses of members increase

So when I mangle it to actually print each member's address in order,
whenever the tuple is printed :

        std::ostream &tuple::operator <<(std::ostream &out) const
        {
          std::cerr << " out: @ :" 
          << (static_cast<const void*>
              (reinterpret_cast<const _Head *>(this)))
          << std::endl;
          return _t.operator<<( out << head() << " " );
        }       

$ ./tTuple < /tmp/t
 out: @ :0x7ffc6f93d410
one  out: @ :0x7ffc6f93d430
two  out: @ :0x7ffc6f93d450
three
 fun( one two three )
one
two
three

This would not be the case had std::tuple been used - the addresses would be
DECREASING .

But I am now able to use with no problems in C++14, C++17 under 7.1.0 . Thanks!


More information about the Gcc-bugs mailing list