2013-06-18 18 views
0

我能找到兩個建議,包括在C++範圍: N1871是相當老的(2005),和N3513何時將範圍包含在C++標準中?

但是我找不到任何有關在當前的C++ 14草案(N3690)的範圍東西。這是否意味着它不會成爲C++ 14的一部分?如果是這樣的話,爲什麼引入範圍這麼麻煩?

+0

只是猜測,但可能是因爲我們已經有迭代器對它被認爲是低優先級。 –

+0

如果您瀏覽http://www.open-std.org/pipermail/ranges/上的Ranges郵件列表存檔,您可以看到1)現在沒有很多事情正在發生,以及2)沒有人能真正達成共識任何東西。另外,如果你看看布裏斯托爾郵政後郵件,你可以看到沒有什麼相關的:http://isocpp.org/blog/2013/05/post-bristol-standards-papers-mailing-available因此,不,不會發生在C++ 14上。 – BoBTFish

+5

「*爲什麼介紹範圍這麼麻煩?*」因爲沒人真的知道範圍是什麼,應該是什麼意思等等。範圍SG似乎分爲Boost.Range陣營和陣營,他們認爲Ranges應該是基本對象(又名:D.Range陣營),而不是僅僅是專門的迭代器對。 –

回答

2

這是否意味着它不會成爲C++ 14的一部分?

是的,它確實不會是C++ 14的一部分。不幸的是,沒有人關心提案的工作。

如果是這樣的話,爲什麼引入範圍這麼麻煩?

很難說。有時候,原因在於不同的人對於什麼應該標準化以及如何(參見模塊或概念)有不同的期望,有時僅僅是因爲該特徵比形式化更復雜而不是緊急。

此外,最常發生的事情是,Boost庫被視爲實驗性的原始標準實現;雖然對Boost.Thread,Boost.Function和Boost.Bind等圖書館有足夠的經驗和共識,所以它們得到了很流暢的標準化 - 不是所有人都對Boost.Range滿意,主要是因爲它缺乏廣泛的,對函數式編程提供高級支持。

+0

「*缺少對函數式編程的廣泛的高層次支持。*」究竟是什麼樣的東西? –

+0

@NicolBolas:像Haskell一樣。 –

+1

爲什麼我們希望C++看起來像Haskell?此外,[人們確實提交了關於範圍要素的提案](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3686.html)。 –