Почему в C ++ Concepts TS есть понятия как переменных, так и функций?

Я смотрел на C ++ 1z N4377 Концепции Проект ТС, который внедряется в GCC 6, и я не понимаю цели иметь два разных вида понятий: переменные понятия и понятия функций.

Соответствующей частью черновика концепций функций является [dcl.spec.concept (5.4)]

  • Объявление должно иметь тело-функцию, эквивалентное { return E; } где E это Ограничение-выражение (14.10.1.3).

и для переменных понятий в следующем параграфе [(6.3)]:

  • Инициализатор должен быть Ограничение-выражение.

Есть ли что-то, что один из них может сделать, а другой — нет? Если нет, есть ли обоснование для включения обоих?

Примечание: последний проект, P0121R0 ничего не меняет в этом отношении

3

Решение

Концепции функций могут быть перегружены на разных параметрах шаблона. Переменные понятия не дают ничего такого, чего нет у функциональных понятий, за исключением способности не помещать () в некоторых контекстах.

Исключение переменных понятий из TS не уменьшит выразительность понятий.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]