Описание тега stdany

Класс any - это типобезопасный контейнер для отдельных значений любого типа.
1 ответ

`std::any_cast` возвращает копию

Я читал документацию для std::any_cast и я нахожу странным, что в API есть приведение, которое либо возвращает значение удерживаемому объекту, либо указатель на него. Почему бы не вернуть ссылку? Копия должна выполняться каждый раз, когда функция вы…
28 янв '17 в 02:50
3 ответа

Как я могу спроектировать хранилище, которое соответствует реализации стандарта std::any?

В стандартном рабочем проекте (n4582, 20.6.3, p.552) изложено следующее предложение для реализации std::any: Реализации должны избегать использования динамически выделяемой памяти для небольшого ограниченного объекта. [Пример: где построенный объект…
07 май '16 в 23:30
1 ответ

Стирание типа C++ с чертами

Я хотел знать, что это возможно, чтобы сделать стертый тип, который соответствует такой черте, как эта: template<class T> using read_t = std::conditional_t<true, decltype(std::declval<T>().Read(uint16_t{})), std::integral_constant<…
18 дек '17 в 10:42
1 ответ

Почему std::any_cast переданного std:: any внутри функции dlopen'd вызывает ошибку

Я играю с C++17 и плагинами, и я столкнулся с ошибкой, которую не могу обойти. В следующем MWE я могу вызвать локальную функцию, которая принимает std::anyи все работает как положено, когда я пытаюсь прочитать содержимое. Когда я загружаю эту же фун…
10 июн '17 в 02:17
4 ответа

Стандарт C++11 обеспечивает что-то вроде boost::any?

Например boost::function почти полностью std::functionто же самое с boost::shared_ptr Но я не могу найти std::any? Был ли он переименован или вообще не был помещен в новый стандарт по какой-либо причине?
08 фев '12 в 14:19
1 ответ

Почему для s td:: any нет unsafe_any_cast?

Моя локальная версия заголовков Boost (1.56.0) имеет следующие функции, определенные в boost/any.hppКопия дословно: // Note: The "unsafe" versions of any_cast are not part of the // public interface and may be removed at any time. They are // requir…
17 янв '18 в 13:32
2 ответа

any_cast с std::any's и std:: необязательный

Если я поставлю T в std::anyЯ могу получить это с any_cast<T>(my_any), Но включает ли стандарт (= C++17, на этапе голосования в данный момент) такую ​​функцию any_cast<T>(optional<any> oa) который возвращается nullopt если оа nullo…
06 окт '16 в 14:48
2 ответа

Получить размер std::any

Есть ли способ получить размер (в байтах) данных, хранящихся std::any? Единственный обходной путь, который я нашел, - это запрос типа его значения std::any::type и сравнивая результат со списком известных типов, таких как my_any.type() == typeid(T)т…
09 апр '18 в 10:24
2 ответа

Тип стирающий, тип стирающий, `любые` вопросы?

Итак, предположим, что я хочу набрать стирание, используя стирание типа. Я могу создать псевдо-методы для вариантов, которые включают естественный: pseudo_method print = [](auto&& self, auto&& os){ os << self; }; std::variant&l…
08 авг '16 в 18:04
4 ответа

Использование C++17 'any' с Xcode 8.1

Я использую C++ в версии Xcode 8.1. Мне нужно использовать функциональность boost::any но я категорически против включения любой части Boost в наш проект (давайте не будем это обсуждать, пожалуйста). я вижу это std::any "слился в C++17" здесь. Я хоч…
11 дек '16 в 20:21
1 ответ

Удастся ли сравнить две произвольные функции с std::any в C++17?

Я думаю, что большим ограничением того, как C++ обрабатывает указатели на функции и std::function, является невозможность элегантного сравнения двух произвольных функций разного типа. Теперь мне интересно, если C++17 изменит это с введением std::any…
13 апр '17 в 10:43
1 ответ

Поддерживается ли std::any в MSVC 2017?

Я пытаюсь скомпилировать кусок кода с: cl /c /std:c++latest /Gm- /sdl /Zc:inline /RTC1 /Oy /MDd /FA /EHs main.cxx но я получаю эту ошибку: error C2039: 'any': is not a member of 'std' и мне интересно, как (если это возможно) я могу получить эту функ…
12 апр '18 в 05:55
4 ответа

Когда я должен использовать std::any

Начиная с C++17 std::any вводится. Теперь можно написать код, подобный этому #include <iostream> #include <any> #include <string> int main () { const double d = 1.2; std::any var = d; const std::string str = "Hello World"; var = st…
09 окт '18 в 07:10
1 ответ

std::any - почему так мало операторов?

Я смотрю на использование std::any для стирания типов как части интерфейса, который я создаю, и мне остается удивляться, почему в нем так мало операторов, как "+", "==". Я возился с Coliru здесь, где я расширил std::any для суммирования и печати в o…
06 дек '18 в 12:36
2 ответа

Хранение нескольких типов в контейнере члена класса

Я читал это Q/A здесь, и так как мой вопрос похож, но отличается, я хотел бы знать, как сделать следующее: Допустим, у меня есть базовый не наследуемый не шаблонный класс Storage, class Storage {}; Я хотел бы, чтобы в этом классе был один контейнер …
1 ответ

Невозможно переместить std::any

Следующий код using vptr = std::vector<std::unique_ptr<int>>; auto m = std::unordered_map<int, std::any>{}; m.try_emplace(0, move(vptr{})); Не компилируется, жалуется на использование конструктора удаленных копий unique_ptr, После …
29 май '19 в 22:12
5 ответов

Найти элемент в std::vector из std::any

Я хочу проверить, существует ли элемент в векторе или нет. Я знаю, что следующий фрагмент кода проверит это. #include <algorithm> if ( std::find(vector.begin(), vector.end(), item) != vector.end() ) std::cout << "found"; else std::cout &…
08 мар '19 в 06:37
1 ответ

Используя 'auto' в std::map

Я анализирую файл JSON, значения могут состоять из целого числа, строки или числа с плавающей запятой. Обычно у меня есть карта, определенная так: std::map<std::string, std::string> myMap; Проблема в том, что я не понимаю, как использовать кар…
09 апр '19 в 12:42
1 ответ

Как вернуть другой тип на основе аргумента enum

У меня есть две функции, которые требуют следующего: Функция 1: Требуется адрес переменной для установки значения. (Знает о правильном типе) Функция 2: перегруженная функция, которая требует значения типа. Мне нужен способ вернуть разные типы на осн…
27 июн '19 в 21:10
0 ответов

Использование std::any с gmock приводит к другому поведению на gcc 7 и 9

Я пытался смоделировать шаблонную функцию в классе и найти хороший пример в этом вопросе Поэтому я попытался использовать std::any с googlemock, и ниже код подходит. #include <any> #include <gmock/gmock.h> #include <gtest/gtest.h> …
07 авг '19 в 08:02