Почему добавление constexpr делает VS2013 отвергающим это?
85
7
Этот код не компилируется в Visual Studio 2013
template <typename X>
constexpr //error C2144: syntax error : 'bool' should be preceded by ';'
bool Test(X x)
{
return true;
}
Однако, если я удаляю ключевое слово constexpr
, оно компилируется.
Но constexpr
не должно быть проблемой? поскольку он всегда возвращает true.
Что пошло не так?
спросил(а)
2017-12-13T10:17:00+03:00
3 года, 2 месяца назад
добавить комментарий
пожаловаться
Решение
85
Несмотря на 2013 год в названии, VS2013 не претендует на роль компилятора, ориентированного на стандарт С++ 11 (который был, когда был введен constexpr
).
Значение __cplusplus
будет 201103L
для компилятора С++ 11.
Итак, ваш компилятор встречает токен, который он не распознает, и выдает диагностику.
ответил(а)
2017-12-13T10:33:00+03:00
3 года, 2 месяца назад
добавить комментарий
пожаловаться
Ваш ответ
Еще в рубрике
129
Использование int в качестве параметра шаблона, который неизвестен до времени выполнения
95
Ошибка в std :: варианте реализации gcc7
61
-O Включает компиляцию (статический элемент данных constexpr)
185
Почему переменные статические члены, инициализированные в классе, должны быть constexpr?