我正在尋找C型聯盟的替代品。 boost :: variant是一個這樣的選項。標準C++中有什麼?C++標準庫中boost :: variant的等價物是什麼?
union {
int i;
double d;
}
我正在尋找C型聯盟的替代品。 boost :: variant是一個這樣的選項。標準C++中有什麼?C++標準庫中boost :: variant的等價物是什麼?
union {
int i;
double d;
}
正如幾位評論者所說:不,在標準C++中沒有Boost Variant。也許在幾年後會有,但爲什麼要等 - 今天使用Boost Variant!
編輯(四年後,2016):在C++ 17會有std::variant
。與boost::variant
相似但不完全相同。所以當你的編譯器支持C++ 17時,你將在標準庫中有一個解決方案。
這是如何作爲答案的資格?這是一條評論。 – 2016-07-15 07:32:58
這個答案很快就會過時。 C++ 17將包含'std :: variant',http://en.cppreference.com/w/cpp/utility/variant – TimZaman 2016-08-07 11:55:58
@TimZaman:感謝您的提醒。我添加了一個編輯來記錄C++ 17的支持。 – 2016-08-07 17:10:41
幾年過去了:現在a proposal即將開始。可能boost::variant
將使它成爲C++ 17!在此之前,我們將不得不忍受boost::variant
,這仍然很棒。請注意,std::variant
中的細節會有所變化。
更新:建議做到了。 std::variant
將成爲新的C++ 17標準的一部分。這是June 2016 meeting report by Herb Sutter。他在那裏證實了這一點。
你可以列出其中的一些變化嗎? – einpoklum 2016-04-08 17:24:39
這些變化仍然可能發生變化。 ;)一些變化是有爭議的。它也不在表面上,但有一些複雜的設計決定。爲了不讓不必要的問題複雜化,我選擇簡潔明瞭。有些問題可以在我的答案中的提案鏈接中找到。 – 2016-04-11 13:22:37
std::variant
現在正式成爲C++ 17標準庫的一部分! https://herbsutter.com/2016/06/30/trip-report-summer-iso-c-standards-meeting-oulu/
沒有,但Boost.Variant極有可能在TR2中。 – ildjarn 2012-03-22 22:01:26
不幸的是,大部分的提升都沒有「標準」等值。 – 2012-03-22 22:05:23
使用Boost沒有錯。 C++的重點在於它可以讓你編寫有用的庫。它不會試圖提供所有的東西,而是爲您提供* make *所需的一切工具。使用Boost。 – 2012-03-22 22:12:54