Jeśli rozmiar pustej klasy nie może wynosić 0, jaka magia robi std :: tuple, więc sizeof unique_ptr zwróci 8 na 64-bitowym komputerze?W jaki sposób std :: unique_ptr nie ma narzutów rozmiaru?
W unique_ptr człon definiuje się jako:
typedef std::tuple<typename _Pointer::type, _Dp> __tuple_type;
__tuple_type _M_t;
przypadku _DP jest klasa deleter.
kompilator gcc w wersji 4.7.1 (Debian 4.7.1-7)
Może to być również zależne od implementacji, więc możesz chcieć dołączyć do tego kompilatora, o którym mówisz. –
Nie jestem pewien, jak 'std :: tuple' odnosi się do' std :: unique_ptr' w twoim pytaniu. Czy mógłbyś wyjaśnić? – Cameron
@Cameron, _M_t jest typem bazowym na unique_ptr. – piotr