Poszukuję alternatywy dla unii w stylu C. boost :: variant jest jedną z takich opcji. Czy jest coś w standardowym C++?Jaki jest odpowiednik opcji boost :: variant w bibliotece standardowej C++?
union {
int i;
double d;
}
Poszukuję alternatywy dla unii w stylu C. boost :: variant jest jedną z takich opcji. Czy jest coś w standardowym C++?Jaki jest odpowiednik opcji boost :: variant w bibliotece standardowej C++?
union {
int i;
double d;
}
Ponieważ kilka komentujących powiedział: Nie, nie ma doładowania Variant-zarówno w standardowej C++. Może za kilka lat będzie, ale po co czekać - skorzystaj już z Boost Variant!
Edit (cztery lata później, 2016): w C++ 17 będzie std::variant
. Podobne, ale nie identyczne z boost::variant
. Więc kiedy twój kompilator obsługuje C++ 17, będziesz miał rozwiązanie w standardowej bibliotece.
Jak to się kwalifikuje jako odpowiedź? To jest komentarz. –
Ta odpowiedź wkrótce będzie nieaktualna. C++ 17 będzie zawierało 'std :: variant', http://en.cppreference.com/w/cpp/utility/variant – TimZaman
@TimZaman: Dzięki za przypomnienie. Dodałem edycję, aby zauważyć obsługę C++ 17. –
Minęło kilka lat: teraz a proposal jest w drodze. Prawdopodobnie boost::variant
zmieni się w C++ 17! Do tego czasu będziemy musieli żyć z boost::variant
, która jest wciąż niesamowita. Zauważ, że będą pewne zmiany w szczegółach w std::variant
.
AKTUALIZACJA: Wniosek złożył. std::variant
będzie częścią nowego standardu C++ 17. Oto June 2016 meeting report by Herb Sutter. Tam to potwierdza.
Czy możesz wymienić niektóre z tych zmian? – einpoklum
Zmiany mogą ulec zmianie. ;) Niektóre zmiany są kontrowersyjne. Również nie jest na powierzchni, ale są pewne skomplikowane decyzje projektowe. Aby niepotrzebnie nie komplikować odpowiedzi, postanowiłem być zwięzły i rzeczowy. Niektóre problemy można znaleźć w linku do wniosku w mojej odpowiedzi. –
Obecnie jest oficjalnie częścią standardowej biblioteki C++ 17! https://herbsutter.com/2016/06/30/trip-report-summer-iso-c-standards-meeting-oulu/
Nie ma, ale Boost.Variant najprawdopodobniej znajduje się w TR2. – ildjarn
Niestety, większość boostów nie ma jeszcze odpowiednika "std". –
Nic złego w korzystaniu z funkcji Zwiększ. Cała sprawa C++ polega na tym, że pozwala pisać biblioteki, które wykonują użyteczne rzeczy. Nie stara się dostarczyć wszystkiego od razu po wyjęciu z pudełka, ale raczej daje narzędzia do * robienia * wszystkiego, czego potrzebujesz. Użyj wzmocnienia. –