Почему это не оценивается как постоянное выражение?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему это не оценивается как постоянное выражение?

Сообщение Anonymous »

Я действительно ожидал, что это будет работать: < /p>
#include

struct serialiser_deserialiser
{
template
void read_or_write(U& obj_to_write)
{
if constexpr (this->isTrue())
{
}
}

template
constexpr bool isTrue() const { return true; }
};

int main() {
serialiser_deserialiser serialiser_obj;
int a;
serialiser_obj.read_or_write(a);
}
< /code>
Однако ошибка, которую я получаю: < /p>

Ошибка: constexpr Если условие не является постоянным выражением < /p>
< /blockquote>
Какова причина, по которой это не постоянное выражение? Имеет ли это какое -то отношение к тому факту, что его istrue () называется из шаблонной функции? Или что само по себе является шаблонной функцией?

Подробнее здесь: https://stackoverflow.com/questions/794 ... expression
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»