Я действительно ожидал, что это будет работать: < /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