Абсолютно ли необходимо, чтобы std::any_cast() и std::get_if(std::variant) принимали указатель в качестве аргумента?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Абсолютно ли необходимо, чтобы std::any_cast() и std::get_if(std::variant) принимали указатель в качестве аргумента?

Сообщение Anonymous »

Для std::any и std::variant у нас есть функции для запроса объекта о текущем содержащемся значении, которые возвращают nullptr, если запрос не может быть удовлетворен (точно так же, как динамический_cast да):

Код: Выделить всё

template
const ValueType *any_cast(const any *operand);

template
ValueType *any_cast(any *operand);
и

Код: Выделить всё

template 
std::add_pointer_t get_if(variant *pv);

template 
std::add_pointer_t get_if(const variant *pv);
Оба принимают указатель в качестве аргумента. Почему? Это неэффективно. Реализация должна каждый раз проверять, не равен ли аргумент nullptr. Имеет ли вообще аргумент nullptr какой-либо смысл?

Эти функции могут быть членами класса или принимать ссылку в качестве аргумента (может быть с немного другими именами). Каковы причины такого неоптимального дизайна? Просто имитировать интерфейс Dynamic_cast?

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • $ route ['wranswer-qb/(: any)/(: any)/(: any)'] не работает
    Anonymous » » в форуме Php
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Можно ли проверить концепцию на соответствие 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

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