boost compressed_pair и адресов пустых объектов

AFAIK, boost :: compressed_pair должен гарантировать, что адреса первого и второго членов различны, пока он творит свою магию сжатия пары. Так сказано здесь . Похоже, что это не так, и его поведение отличается на разных компиляторах. Пользуюсь boost v 1.47. Что мне не хватает?

struct E1 {};
struct E2 {};

boost::compressed_pair diff_pair;
boost::compressed_pair 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());

6
задан Sumant 8 October 2011 в 01:10
поделиться