Ищу альтернативу соединению в стиле C. boost :: variant - одна из таких опций. Есть ли что-нибудь в std C ++?
union {
int i;
double d;
}
Ищу альтернативу соединению в стиле C. boost :: variant - одна из таких опций. Есть ли что-нибудь в std C ++?
union {
int i;
double d;
}
Как сказали несколько комментаторов: Нет, в стандартном C ++ нет подобного варианта Boost. Может быть, через несколько лет так и будет, но зачем ждать - используйте Boost Variant уже сегодня!
Изменить (четыре года спустя, 2016 г.): В C ++ 17 будет std::variant
. Подобен boost::variant
, но не идентичен ему. Итак, когда ваш компилятор поддерживает C ++ 17, у вас будет решение в стандартной библиотеке.
std::variant
, en.cppreference.com/w/cpp/utility/ вариант
- person TimZaman; 07.08.2016
Прошло несколько лет: теперь предложение уже в пути. Возможно boost::variant
попадет в C ++ 17! А пока нам придется жить с boost::variant
, что по-прежнему круто. Обратите внимание, что в std::variant
будут некоторые изменения в деталях.
ОБНОВЛЕНИЕ: предложение внесено. std::variant
будет частью нового стандарта C ++ 17. Вот отчет Херба о встрече за июнь 2016 г. Саттер. Там он это подтверждает.
std::variant
теперь официально станет частью стандартной библиотеки C ++ 17! https://herbsutter.com/2016/06/30/trip-report-summer-iso-c-standards-meeting-oulu/
std
эквивалента. - person Mooing Duck   schedule 23.03.2012boost::variant
- это библиотека только для заголовков, поэтому вам не нужно беспокоиться о создании / связывании библиотеки Boost, если вы используете толькоboost::variant
. Просто убедитесь, что путь к файлам заголовков boost включен в ваш проект / IDE / makefile. - person Emile Cormier   schedule 23.03.2012boost::optional
был отправлен один раз, и из этого ничего не вышло. - person pmr   schedule 29.03.2012boost::variant
даже понадобится ли? - person Evan Teran   schedule 29.08.2014