Что является эквивалентом Boost :: Вариант в стандартной библиотеке C ++? - PullRequest
13 голосов
/ 23 марта 2012

Я ищу альтернативу союзному стилю.Boost :: вариант является одним из таких вариантов.Есть что-нибудь в стандарте C ++?

union {
   int i;
   double d;
}

Ответы [ 3 ]

24 голосов
/ 23 марта 2012

Как сказали несколько комментаторов: нет, в стандартном C ++ нет Boost Variant-подобных.Может быть, через несколько лет будет, но зачем ждать - используйте Boost Variant сегодня!


Edit (четыре года спустя, 2016): В C ++ 17 будетбыть std::variant.Похожи, но не идентичны boost::variant.Поэтому, когда ваш компилятор поддерживает C ++ 17, у вас будет решение в стандартной библиотеке.

10 голосов
/ 11 декабря 2015

Прошло несколько лет: сейчас предложение в процессе.Возможно boost::variant превратится в C ++ 17!До тех пор нам придется жить с boost::variant, который все еще потрясающий.Обратите внимание, что в деталях в std::variant будут некоторые изменения.

ОБНОВЛЕНИЕ: Предложение сделало это.std::variant станет частью нового стандарта C ++ 17.Вот отчёт Херба Саттера за июнь 2016 года .Там он это подтверждает.

4 голосов
/ 07 июля 2016

std::variant официально станет частью стандартной библиотеки C ++ 17!https://herbsutter.com/2016/06/30/trip-report-summer-iso-c-standards-meeting-oulu/

...