hashtable local iterator
Marc Glisse
marc.glisse@inria.fr
Mon Dec 19 21:58:00 GMT 2011
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
More information about the Libstdc++
mailing list