Сообщение Re: Нарушение ODR на концептах от 29.05.2021 9:49
Изменено 29.05.2021 10:04 vopl
Re: Нарушение ODR на концептах
Здравствуйте, Кодт, Вы писали:
К>ЧТО ЭТО?
К>- дефект стандарта
Вроде как бы нет.. Если это переписать на trailing requires-clauses
проблема никуда не уходит, один к одному такая же. И тут можно явно применять следующее
К>- дефект правил манглирования имён
Однозначно да. Ограничения должны входить в имя, но не входят.
К>ЧТО ЭТО?
К>- дефект стандарта
Вроде как бы нет.. Если это переписать на trailing requires-clauses
примерно так | |
| |
то есть, конфликта быть не должно потому что разные trailing requires-clauses. Думаю, что в случае концептов в заголовке шаблона — ситуация должна разруливаться точно так же. Наверное в последних редакциях стандартах уже так и написано, но лень искать..12.3 Declaration matching [over.dcl]
1 Two function declarations of the same name refer to the same function if they are in the same scope and
have equivalent parameter declarations (12.2) and equivalent (13.7.6.1) trailing requires-clauses, if any (9.3).
К>- дефект правил манглирования имён
Однозначно да. Ограничения должны входить в имя, но не входят.
Re: Нарушение ODR на концептах
Здравствуйте, Кодт, Вы писали:
К>ЧТО ЭТО?
К>- дефект стандарта
Вроде как бы нет.. Если это переписать на trailing requires-clauses
проблема никуда не уходит, один к одному такая же. И тут можно явно применять следующее
К>- дефект правил манглирования имён
Однозначно да. Ограничения должны входить в имя, но не входят.
[добавлено позже] .. потому что манглированное имя производится из сигнатуры, а она определяется так
К>ЧТО ЭТО?
К>- дефект стандарта
Вроде как бы нет.. Если это переписать на trailing requires-clauses
примерно так | |
| |
то есть, конфликта быть не должно потому что разные trailing requires-clauses. Думаю, что в случае концептов в заголовке шаблона — ситуация должна разруливаться точно так же. Наверное в последних редакциях стандартах уже так и написано, но лень искать..12.3 Declaration matching [over.dcl]
1 Two function declarations of the same name refer to the same function if they are in the same scope and
have equivalent parameter declarations (12.2) and equivalent (13.7.6.1) trailing requires-clauses, if any (9.3).
К>- дефект правил манглирования имён
Однозначно да. Ограничения должны входить в имя, но не входят.
[добавлено позже] .. потому что манглированное имя производится из сигнатуры, а она определяется так
3.21 [defns.signature.templ]
signature
〈function template〉 name, parameter-type-list (9.3.3.5), enclosing namespace (if any), return type, templatehead, and trailing requires-clause (9.3) (if any)