Я смотрел на C ++ 1z N4377 Концепции Проект ТС, который внедряется в GCC 6, и я не понимаю цели иметь два разных вида понятий: переменные понятия и понятия функций.
Соответствующей частью черновика концепций функций является [dcl.spec.concept (5.4)]
{ return E; }
где E
это Ограничение-выражение (14.10.1.3).и для переменных понятий в следующем параграфе [(6.3)]:
Есть ли что-то, что один из них может сделать, а другой — нет? Если нет, есть ли обоснование для включения обоих?
Примечание: последний проект, P0121R0 ничего не меняет в этом отношении
Концепции функций могут быть перегружены на разных параметрах шаблона. Переменные понятия не дают ничего такого, чего нет у функциональных понятий, за исключением способности не помещать ()
в некоторых контекстах.
Исключение переменных понятий из TS не уменьшит выразительность понятий.
Других решений пока нет …