【发布时间】:2011-10-08 01:10:13
【问题描述】:
AFAIK,boost::compressed_pair 应该确保第一个和第二个成员的地址不同,同时它会发挥压缩对的魔力。上面写着here。似乎并非如此,它的行为在不同的编译器上是不同的。我正在使用 boost v 1.47。我错过了什么?
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());
【问题讨论】:
标签: c++ optimization boost