Почему std :: sub_match публично наследуется от std :: pair ?

Я читал документацию std :: sub_match и увидел, что он публично наследуется от std :: pair . Поскольку sub_match - это просто пара итераторов в последовательности символов с некоторыми дополнительными функциями, я могу понять, что он реализован с помощью пары , но зачем использовать публичное наследование?

Проблема с публичным наследованием от std :: pair такая же, как и с публичным наследованием от большинства других стандартных классов: они не предназначены для полиморфного манипулирования (в частности, они не определяют виртуальный деструктор).Другие члены также не будут работать должным образом, а именно оператор присваивания и функция-член подкачки (они не будут копировать член matched из sub_match ).

Почему разработчики Boost, а затем комитет решили реализовать sub_match путем публичного наследования от пары вместо использования композиции (или частного наследования с использованием объявлений, если они хотели сохранить доступ к членам через первый и второй )?

10
задан Luc Touraille 27 October 2011 в 15:22
поделиться