http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53648
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-06-12
17:27:50 UTC ---
There are other cases involving non-empty tuples that will still result in an
ambiguity e.g.
struct A { };
auto d = tuple<tuple<tuple<A, A>, A>, A>{};
My solution avoids using the EBO for some condition I don't remember (the
code's on another machine) but it handles all the cases I tested.
I also preserve the property that sizeof(tuple<char, tuple<>>)==1, which I
think your suggestion loses.