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:

If you use std::tuple to store the members it will automatically use
EBO if possible.

If two types might be the same use std::tuple<X,Y,X> where X might be
empty and Y is not empty, that ensures the two X objects will not have
the same address so can have zero size.

I just tried this:


#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)

--
Marc Glisse


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