The implementations of std::tuple in both libstdc++ and libc++ use (I presume) the empty base class optimisation to compress empty elements:
struct empty {};
static_assert(sizeof(std::tuple<int, empty>) == sizeof(int), ""); // (1)
My question is simply, is this behaviour mandated by the standard? That is, can I rely on (1) always being true for a standard-conforming implementation?