Использование std :: less с nullptr

Всегда ли верно утверждение в следующем фрагменте кода?

std::less<Object *> lessPtr;
Object * o = new Object();
assert(lessPtr (o, nullptr) == false);
12 голосов | спросил Alexander 2 MarpmMon, 02 Mar 2015 16:30:58 +03002015-03-02T16:30:58+03:0004 2015, 16:30:58

1 ответ


0

Нет, порядок нулевого указателя относительно любого ненулевого указателя не указан.

Результат операторов сравнения не определен, если операнды «указывают на разные объекты, которые не являются членами одного и того же объекта или элементов одного и того же массива или на разные функции, или если только один из них является нулевым».

std::less и друзья расширяют это, чтобы указать, что есть общий порядок, но не указывают, где в этом порядке встречаются нулевые указатели. Таким образом, гарантируется, что null будет либо больше, либо меньше любого заданного ненулевого указателя. Но не указывается, что он меньше или больше всех ненулевых указателей.

ответил Mike Seymour 2 MarpmMon, 02 Mar 2015 16:48:14 +03002015-03-02T16:48:14+03:0004 2015, 16:48:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132