В основном это вопрос языкового юриста, я сомневаюсь, что большинство реализаций будут беспокоить, тем более что это, вероятно, увеличит время компиляции для каждого пользователя.
При этом: если какая-то реализация std::set была реализована с использованием битового набора для каждого экземпляра и статического массива из 256 значений, которые являются общими (это безопасно, поскольку ключи являются константами), было бы это законным в соответствии с (если издание имеет значение, тогда предположим С++ 20) стандарт?
insert
иextract
позволяют удалять, изменять и вставлять ключ обратно в ассоциативные контейнеры. Специализация должна была бы иметь дело с этой сложностью, гарантированной стандартом. - person NathanOliver   schedule 04.05.2019node_type
может просто содержать непосредственно изменяемый членvalue_type
. Ему никогда не нужно представлять значение, которое также находится в каком-то наборе, другом узле и т. д.insert(node)
просто нужно будет сделать то же самое, что иinsert(node.value())
, которое уже равно O (1). - person aschepler   schedule 04.05.2019