Разрешено ли реализациям добавлять открытых членов к стандартным типам?

Разрешено ли реализациям стандартной библиотеки C ++ добавлять открытые (и защищенные) члены к стандартным типам? интерфейсы? N3797 17.6.5.5 [member.functions] / 2 говорит:

Реализация может объявлять дополнительные не виртуальные сигнатуры функций-членов в классе:

 путем добавления аргументов со значениями по умолчанию к сигнатуре функции-члена; [ЗаметкаРеализация не может добавлять аргументы со значениями по умолчанию к виртуальным, глобальным функциям или функциям, не являющимся членами. - конечная нота] -

 путем замены сигнатуры функции-члена значениями по умолчанию двумя или более сигнатурами функции-члена с эквивалентным поведением; а также-

 путем добавления подписи функции-члена для имени функции-члена.

Означает ли это, что стандартная библиотека не может добавлять какие-либо дополнительные открытые члены с именами, не упомянутыми в стандарте, ни при каких обстоятельствах (например, зарезервированные идентификаторы)?

Небольшое объяснение: это текст о добавлении сигнатур (который, как я предполагаю, говорит о новых сигнатурах только для функций, которые уже определены, чтобы быть там, поэтому нет новыхимена) Мне удалось найти в стандарте. Есть также сноска 189, которая гласит:

Действительная программа на C ++ всегда вызывает ожидаемую библиотечную функцию-функцию или функцию с эквивалентным поведением. Реализация также может определять дополнительные функции-члены, которые в противном случае не были бы вызваны допустимой программой C ++.

Весь этот текст происходит от [member.functions], поэтому он явно касается только функций-членов. Мой вопрос носит более общий характер и требует каких-либо ссылок, которые я мог быпропущено: стандартная реализация библиотеки позволяет добавлять новыеимена к открытым (и / или защищенным) интерфейсам стандартного типа, будь то данные или функции-члены?

Ответы на вопрос(2)

Ваш ответ на вопрос