5
AFAIK,boost::compressed_pair應該確保第一個和第二個memebrs的地址是不同的,同時它實現了壓縮該對的魔力。它說如此here。似乎不是這樣,它的行爲在不同的編譯器上是不同的。我正在使用boost v 1.47。我錯過了什麼?boost compressed_pair和空對象的地址
struct E1 {};
struct E2 {};
boost::compressed_pair<E1, E2> diff_pair;
boost::compressed_pair<E1, E1> same_pair;
// clang++ and g++ 4.7 print the same address but VC2010 prints different addresses.
printf("different pairs = %p, %p\n", &diff_pair.first(), &diff_pair.second());
// clang++ and g++ 4.7 print different addresses but VC2010 prints the same address.
printf("different pairs = %p, %p\n", &same_pair.first(), &same_pair.second());