Как проверить, что результат функции является contexPR, даже если аргумент нет?C++

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

Сообщение Anonymous »

constexpr Функции могут давать результаты contexpr , даже если их аргументы не являются contexpr, если они не используются. Таково, например, std :: Integral_constant :: operator t :
#include

std::integral_constant a;
constexpr int b = a; // Compiles!

Как я могу сделать концепцию для проверки этого свойства функции?
Например, я хочу, чтобы следующее работало: запустить на gcc.godbolt.org
#include

struct A {explicit constexpr operator bool() const {return true;}};
struct B {int x = 1; explicit constexpr operator bool() const {return x;}};

template
concept C = requires(T t){std::bool_constant{};};

static_assert(C);
static_assert(!C);
< /code>
Но это дает мне: < /p>
:7:46: error: constraint variable 't' cannot be used in an evaluated context
7 | concept C = requires(T t){std::bool_constant};
| ^


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

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

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

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

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

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