This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: hashtable local iterator


On Mon, 19 Dec 2011, Jonathan Wakely wrote:

On 19 December 2011 21:01, Marc Glisse wrote:
#include <iostream>
#include <tuple>
struct A{};
int main(){
? ? ? ?std::cout << sizeof(std::tuple<A,A,int>) << std::endl;
? ? ? ?std::cout << sizeof(std::tuple<A,int,A>) << std::endl;
? ? ? ?std::cout << sizeof(std::tuple<int,A,A>) << std::endl;
}

and it output 8, 8 and 4.
(if I have more than 4 A at the end, the size will increase)

I suppose I should have tested it before making that claim :)


Still, using tuple can use the EBO, even if not always optimally,

In this case, it is a weird quirk in the itanium ABI that is causing this, so it looks like we are stuck with it for a while.


But generally, it is quite hard to get a good layout. I wonder if tuple shouldn't make a stronger effort to compact the structure, say by sorting the elements, empty types first, then by decreasing size. That would complicate the implementation quite a bit, but it might be worth it.


-- Marc Glisse


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]