Если размер пустого класса не может быть 0, то какая магия делает std:: tuple, поэтому sizeof unique_ptr возвращает 8 в 64-битной машине?
В unique_ptr член определяется как:
typedef std::tuple<typename _Pointer::type, _Dp> __tuple_type;
__tuple_type _M_t;
Где _Dp - класс делетера.
Компилятор - версия gcc 4.7.1 (Debian 4.7.1-7)