Концепция C++ для соответствия альтернативе std::variant (но она также работает с типами, унаследованными от std::varianC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Концепция C++ для соответствия альтернативе std::variant (но она также работает с типами, унаследованными от std::varian

Сообщение Anonymous »

Я использую много std::variant. У меня есть эта надежная вспомогательная концепция, которая соответствует альтернативам определенного типа варианта:
template
struct alternative_c_impl {
static_assert(false, "can't use is_alternative with a non-variant"); // legal in C++23
};
template
struct alternative_c_impl
: std::disjunction
{};
template
concept alternative_c = alternative_c_impl::value;

auto main() -> int
{
using simple_variant = std::variant;
static_assert(alternative_c);
static_assert(alternative_c == false);
}

Однако в C++23 теперь мы можем использовать типы, производные от std::variant. В таких случаях этот подход ожидаемо терпит неудачу с исходным static_assert. Мои навыки работы с шаблонами немного подзабыли, и у меня возникли проблемы с расширением его для работы с таким типом. Я предполагаю, что это каким-то образом связано с std::derived_from. Говоря языком кода, мне нужна концепция Mystery_c, которая работает аналогично:
struct derived_var : std::variant
{

};

auto main() -> int
{
static_assert(mystery_c);
static_assert(mystery_c == false);
}


Подробнее здесь: https://stackoverflow.com/questions/782 ... works-with
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можно ли проверить концепцию на соответствие std::variant и std::vector?
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Можно ли проверить концепцию на соответствие std::variant и std::vector?
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Можно ли проверить концепцию на соответствие std::variant и std::vector?
    Anonymous » » в форуме C++
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Преобразовать std :: variant в std :: variant
    Anonymous » » в форуме C++
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Преобразование std::variant в другой std::variant с супернабором типов.
    Anonymous » » в форуме C++
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

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