Я немного знаком с историей. Есть еще одна более поздняя статья, которую вы также должны прочитать:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2637.pdf
И я считаю, что этот более поздний документ — это то, что на самом деле находится в текущем проекте. Таким образом, в shared_ptr есть функции-члены operator‹() и, основанные на владении, owner_before. weak_ptr имеет только последнее.
Я думаю, что хэш-поддержка для weak_ptr просто была прекращена. Насколько мне известно, никто не предлагал поддержку хеширования для weak_ptr. Было очень много проблем при стандартизации C++0x, ограниченное количество времени и ресурсов для решения проблем, и, несомненно, будут ошибки и недостающие элементы.
Я также думаю, что для добавления поддержки хеширования для weak_ptr это должно быть сделано аналогично owner_before: добавьте функцию-член owner_hash как в shared_ptr, так и в weak_ptr. Я подозреваю, что уже слишком поздно делать это для C++0x, но это кажется правдоподобным предложением TR2.
person
Howard Hinnant
schedule
23.01.2011