我正在阅读一些代码,我遇到了这个例子。我不明白为什么作者在最后一行使用两个变量的偏移量 1。乍一看,我认为这是非法的,因为它指的是可能未初始化的内存区域(并且可能导致分段错误)。我的脑袋一直告诉我未定义的行为,但真的是这样吗?
static bool lt(wchar_t a, wchar_t b)
{
const std::collate<wchar_t>& coll =
std::use_facet< std::collate<wchar_t> >(std::locale());
return coll.compare(&a, &a+1, &b, &b+1) < 0;
}
最后一行是有问题的。为什么他这样做是必要的,这是否合法,何时应该这样做?