Выражение T::b, где T = a, невозможно разрешить, поскольку
b является нестатическим членом . Должно ли формирование
такого недопустимого выражения привести к тому, что
выражение require c будет оценено как false?
Или это должно привести к жесткому -ошибка вместо этого? И если да, то почему?
template
concept c = (bool)T::b;
struct a { bool b; };
static_assert(not c); // #1 - clang ok, gcc nope, msvc ok
При изменении выражения на (T::b, true), где T = a,
даже GCC больше не рассматривает его как жесткое -ошибка. Но не следует
T::b по-прежнему будет оцениваться независимо от того, отброшен ли результат
указанного выражения? Ошибочно ли GCC оценивать
выражение require как истинное, когда T::b не является
константным выражением?
template
concept d = (T::b, true);
static_assert(not d); // #2 - clang ok, gcc nope, msvc ok
Демо
Сообщение об ошибке GCC:
:2:9: required by the constraints of 'template concept c'
:2:22: error: '*(a*)(void)0' is not a constant expression
2 | concept c = (bool)T::b;
| ^
:2:9: required by the constraints of 'template concept c'
:2:22: error: '*(a*)(void)0' is not a constant expression
:6:15: error: non-constant condition for static assertion
6 | static_assert(not c);
| ^~~~~~~~
:2:9: required by the constraints of 'template concept c'
:2:22: error: '*(a*)(void)0' is not a constant expression
2 | concept c = (bool)T::b;
| ^
Подробнее здесь: https://stackoverflow.com/questions/793 ... ession-res
Должно ли замененное выражение ограничения, которое не является константным выражением, привести к серьезной ошибке? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка! Переменная constexpr должна быть инициализирована константным выражением constexpr
Anonymous » » в форуме C++ - 0 Ответы
- 52 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ошибка! Переменная constexpr должна быть инициализирована константным выражением constexpr
Anonymous » » в форуме C++ - 0 Ответы
- 21 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему предупреждение вместо серьезной ошибки в плохо сформированной программе
Anonymous » » в форуме C++ - 0 Ответы
- 47 Просмотры
-
Последнее сообщение Anonymous
-