这似乎表明该程序可能具有未定义的行为,至少因为我们不能保证对键类型进行严格的弱排序:
#include <map>
int main()
{
int x = 0, y = 1;
bool arbitrary = false;
std::map<int*, bool> m{
{&x, arbitrary},
{&y, arbitrary}
};
}
那么,更一般地说,我们可以说带有指针键的映射是一个危险的*命题吗?还是我们可以在这里依靠一些特殊的规则?
* 从学术上讲,就是;实际上,我不知道主流实现实际上会在比较任意指针时引发地狱。