Почему это не оценивается как постоянное выражение?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

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