The test case below passes with GNU libstdc++ in gcc 4.3. I think
it should pass with stdcxx too (i.e., ideally including the test
cases that libstdc++ fails on, although I haven't looked into
whether it's possible without too much effort).
Martin
#include <cassert>
#include <tuple>
struct S { };
int main ()
{
assert (sizeof (std::tuple<S>) == sizeof (std::tuple<>));
assert (sizeof (std::tuple<S, int>) == sizeof (int));
assert (sizeof (std::tuple<int, S>) == sizeof (int));
#ifndef __GLIBCXX__
assert (sizeof (std::tuple<S, S>) == sizeof (std::tuple<>));
assert (sizeof (std::tuple<S, S, S>) == sizeof (std::tuple<>));
assert (sizeof (std::tuple<S, S, int>) == sizeof (int));
assert (sizeof (std::tuple<S, int, S>) == sizeof (int));
assert (sizeof (std::tuple<int, S, S>) == sizeof (int));
assert (sizeof (std::tuple<int, S, S>) == sizeof (int));
#endif
}